reverse code engineering voidman virus analysis

31
ШУТИС, КТМС, ахлах багш маг. Чулууны ЭРДЭНЭБАТ [email protected] http://erdenebat-chuluun.blogspot.com Улаанбаатар, 2009 SecOpenDay2009 Кибер аюулгүй байдлын нээлттэй өдөрлөг КИБЕР ТЕРРОРИЗМ БА КИБЕР АЮУЛГҮЙ БАЙДАЛ Онол практикийн бага хурал

Upload: erdenebat-chuluun

Post on 21-Jul-2015

1.698 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Reverse code engineering  voidman virus analysis

ШУТИС, КТМС, ахлах багш

маг. Чулууны ЭРДЭНЭБАТ

[email protected]

http://erdenebat-chuluun.blogspot.com

Улаанбаатар, 2009

SecOpenDay2009Кибер аюулгүй байдлын нээлттэй өдөрлөг

КИБЕР ТЕРРОРИЗМ БА КИБЕР АЮУЛГҮЙ БАЙДАЛ

Онол практикийн бага хурал

Page 2: Reverse code engineering  voidman virus analysis

Танилцуулга

Өөрийн болон судалгааны ажлын талаар

Ре-инженерчлэл x86 –гийн үндсэн зарчмууд Хорт код Хорт програмын анализ VoidMan вирусын дизассембл Дүгнэлт Ашигласан материал Асуулт хариулт

Page 3: Reverse code engineering  voidman virus analysis

Өөрийн тухай бяцхан мэдээлэл

ШУТИС, КТМС –д 6 жилдээ багшилж байна.

“Мэдээллийн технологийн суурь инженер” –

ийн олон улсын сертификаттай.

Мэдээллийн аюулгүй байдал, програмын

хамгаалалт, ре-инженерингийн талаар

голчлон судалдаг.

Page 4: Reverse code engineering  voidman virus analysis

Энэхүү ажлын зорилго нь дараах гурван

асуултанд хариулт өгөх зорилготой.

Үүнд:

Вирусыг хэрхэн ре-инженеринг хийх вэ?

Вирусыг ре-инженеринг хийснээр тухайн

вирусын ирээдүйн вариацуудыг

илрүүлэх, сэргийлэх, эмчлэх боломж бий

эсэх?

Ре-инженерингийг илүү бүтээмжтэй

гүйцэтгэж болох уу?

Page 5: Reverse code engineering  voidman virus analysis

Ре-инженерчлэл гэдэг бол тухайн системийн дээд түвшний зураглалыг гаргаж авахын тулд хийгдэж байгаа анализын процесс юм [1].

Програмын ре-инженерчлэлийн хэрэгцээ:

...

Вирусны судалгаа, шинжилгээ хийхийн тулд ре-инженерчлэлийг хийдэг байна [2].

...

Page 6: Reverse code engineering  voidman virus analysis

Процессор өгөгдөлтэй хэрхэн ажиллаж байгааг ойлгосноор компьютерийн аюулгүй байдлын олон аспектуудыг ойлгоход хэрэг болно [2].

Кодын ре-инженеринг хийхийн тулд дараах зүйлүүдийн талаар ойлголттой байх хэрэгтэй.

Регистер

Ассембл

Ажиллагааны бүтэц

Стек

Page 7: Reverse code engineering  voidman virus analysis

Регистер: Бүх процессорууд регистр гэж нэрлэгдэх бага

хэмжээтэй дотоод санах ойтой байдаг.

Регистрүүд нь түр зуур өгөгдөл хадгалах зориулалттай байдаг [2].

Уртын хувьд 8 битээс 128 бит байх ба 32 битийн регистрүүд хамгийн түгээмэл

Зарим регистрүүд ерөнхий зориулалттай байхад, зарим регистрүүд нь тусгай зориулалтаар ашиглагддаг.

Хамгийн чухал регистр бол EAX юм. Энэ нь арифметик боловсруулалтын үр дүн болон функцын утга буцаалтанд голчлон хэрэглэгддэг.

Page 8: Reverse code engineering  voidman virus analysis

Ассембл:

Ассембл гэдэг нь машины кодын символик хэл юм.

Процессорын төрөл зүйл болгон өөрийн гэсэн инструкцийн олонлог болон ассембл хэлтэй байдаг.

Жишээ нь: CODE:00470973 push 10h ; uType

CODE:00470975 push offset aVoidmanVirusXu ; “VoidMan" virus - xuvilbar 1.0.2 -"...

CODE:0047097A push offset aSainuuTandEneO ; “Sainuu tand ene odoriin mendiighvrgie"...

CODE:0047097F push 0 ; hWnd

CODE:00470981 call MessageBoxA_0 ; MessageBox haruulah

Page 9: Reverse code engineering  voidman virus analysis

• Ажиллагааны бүтэц:

Объект болон програмын файлуудын хэд

хэдэн формат байдаг.

COFF (Common Object-File Format) бол

Windows системүүдэд ашиглагддаг.

Объект файл нь сегментчлэн хуваагдсан

байдаг. Компилятор буюу линкерээс

хамааран ялгаатай нэрлэгдэж болно.

.text, .data, .rdata, .bss, heap, stack

Page 10: Reverse code engineering  voidman virus analysis

Стек: LIFO(Last In First Out) бүтэцтэй.

Параметрүүд, локаль хувьсагчид, түр зуурын мэдээлэл зэргийг хадгалах зориулалтаар голчлон хэрэглэгддэг.

Шинээр функц дуудах болгонд шинэ стек фрейм үүсгэдэг.

Стек нь дараах 2 регистрээр хандагддаг:▪ ESP: Стекийн оройг байнга заах заагч

▪ EBP: Одоогийн стек фреймын суурийг заах заагч. Ингэснээр параметрүүд болон локаль хувьсагчидтай энэхүү заагчаар дамжуулан хялбархан хандах боломжийг олгодог.

Page 11: Reverse code engineering  voidman virus analysis

Стек:

Page 12: Reverse code engineering  voidman virus analysis

Хорт код бол програм хангамжийн системд файл гэмтээх, хатуу диск арчих, бэкдор үүсгэх, мэдээлэл хулгайлах, их хэмжээний е-мэйл илгээх ... зэрэг хохирол учируулахуйц үйлдлүүд хийх буюу процессор, санах ой, сүлжээний урсгал хэт ачаалах ... зэрэг тодорхой зүйлд чиглэсэн байдаг [3].

Хорт код бол хэрэглэгчийн эрх ашгийн эсрэг ажиллах код юм [4].

Хорт код бол мэдээллийн аюулгүй байдал, өгөгдөл ба кодын урсгал, системийн функцуудад нөлөөлдөг кодын хэсэг юм [5].

Page 13: Reverse code engineering  voidman virus analysis

Хорт програмын анализ хийхийн тулд дараах зүйлсийг анхаарах

хэрэгтэй байдаг. Үүнд, тусгаарлагдсан орчин үүсгэх, санамсаргүйгээр

хулганаараа давхар товшилт хийн ажиллуулахаас сэргийлж файлын

өргөтгөлийг өөрчлөх, аюултай файлуудыг нууц үгтэйгээр архивлах

зэргийг анхаарч байх хэрэгтэй [6].

Хэрэгцээ:

Довтлогчын учруулсан хохиролыг тооцоолох;

Нэг хорт програм эсвэл довтолгоогоор хохирсон бусад машинуудыг

илрүүлэх, тэдгээрийн индикатор, ангилалыг тодорхойлох

Хорт програм зохиогчын ур чадварыг тодорхойлох

Хорт програмд ашиглуулж, давуу тал олгож байгаа системийн цоорхой, сул

талыг илрүүлэх

Хорт програмыг суурилуулсан эзнийг олох буюу довтлогчыг тодорхойлох

.. зэрэг байж болно [7].

Page 14: Reverse code engineering  voidman virus analysis

Хорт програмыг илрүүлэх сканнер (статик) болон детектор (динамик) гэсэн хоѐр үндсэн аргачлал байдаг [8].

Програмыг аюулгүй ажиллуулах механизмыг сэндбокс гэж нэрлэдэг бөгөөд голлон гуравдагч этгээдийн шалгаагүй, туршигдаагүй код буюу програмыг ажиллуулж үзэхэд ашиглагддаг [9].

Page 15: Reverse code engineering  voidman virus analysis

Оршил: Манай сонгож авсан вирус нь “VoidMan” нэртэй

бөгөөд хувилбар нь 1.2.▪ 2007-2008 оны хичээлийн жилийн хаврын улиралд

зарим сургуулиудын лабораторын компьютеруудад богино хугацаанд халдварлан тархсан.

▪ Монгол вирус. Тухайн үед анти-вирусны програмууд илрүүлж, устгаж чадахгүй байсан.

▪ Флэш буюу зөөврийн дискүүдийг ашиглан халдварлан тархдаг.

▪ Системийн ажиллагааг удаашруулах, системийн програмуудыг блоклох, компьютерийг унтраах, тодорхой интервалаар “Sainuu tand eneodoriin mendiig hvrgie” гэсэн мессеж цонхыг гаргадаг.

Page 16: Reverse code engineering  voidman virus analysis

Анализын хэрэгсэлүүд: Анализын явцад дараах хэрэгсэлүүд голчлон

ашигласан:▪ IDA Pro[10]: Интерактив дизассемблер болон дебаггер

▪ PEiD[11]: PE файлын талаарх мэдээллийг авах

▪ DeDe[12]: Програмчлалын Дельфи хэл дээр бичигдсэн програмын ажиллах файлыг дизассембл хийх болон мэдээлэл авах

▪ vmWare Workstation[13]: Нэг үйлдлийн систем дээр өөр нэг үйлдлийн систем виртуалиар суулгах, ингэснээр аюулгүй тусгаарласан орчин үүсгэх

Голлох мэдээллийн веб сайт болон номнууд▪ МSDN сан [14]

▪ Интел архитектурын лавлах[15]

Page 17: Reverse code engineering  voidman virus analysis

Дизассембл хийх шат:

Вирус анализ хийхийн тулд аюулгүй орчин үүсгэх

Вирусыг олж авах:▪ http://www.asuult.net сайтын форумаас[16] татаж авах

Вирусын файлын нэмэлт мэдээллийг PEiDашиглан авах. ▪ Бичигдсэн програмчлалын хэлийг нь тодорхойлох.

DeDe ашиглан вирусын функцуудын эхлэл, төгсгөлийн хаягуудыг нь олох.

Вирусыг IDA Pro –д ачаалах ба анализ хийх▪ Дизассемблерыг нь голчлон ашигласан

▪ Системийн дуудалтуудыг хянах

Page 18: Reverse code engineering  voidman virus analysis

VoidMan13 1.0.2 вирусын сегментүүд

Page 19: Reverse code engineering  voidman virus analysis

IDA Pro – Дэлгэцийн агшин

Page 20: Reverse code engineering  voidman virus analysis

Вирусын функцын урсгал:

1. Вирусын програмын цонхыг харагдахгүй

болгож нуух

2. Зохиогч өөрийн компьютер дээрээ тестлэх

зорилгоор c:\voidman.txt файл бий эсэхийг

шалган хэрэв байвал вирусын ажиллагааг

зогсоодог.

3. Вирус тухайн компьютер дээр ажиллаж

эхэлмэгч өөрийгөө %windir%\help\ хавтасруу

svcnost.exe нэртэй болгон өөрчилж хуулна.

Page 21: Reverse code engineering  voidman virus analysis

Вирусын функцын урсгал:4. %WINDIR%\Help\svcnost.exe файлыг тодорхой

хугацааны богино интервалаар бусад диск буюу зөөврийн флэш санах ойруу SEX.exe, Zurag.exe, My Documents.exe нэртэйгээр хуулна. Эдгээр тархацууд нь хэрэглэгчийн төөрөгдүүлэх үүднээс хавтасны икон зурагтай байна.

5. Тухайн флэш буюу дискийг системд оруулхад вирусыг автоматаар ажиллуулах команд бүхий RDOCURS.inf нэртэй файл үүсгэн бэлдэх ба тэрхүү файлыг зөөврийн санах ой (флэш) –руу autorun.inf нэртэйгээр хуулбарлах ба вирусын програмын хуулбар болох vm13.exe файлтай хамт нууцлагдсан (hidden) төлөвтэйгээр хуулна.

Page 22: Reverse code engineering  voidman virus analysis

Вирусын функцын урсгал:6. Вирус нь системийн Folder Options цэсийг нууна.

Ингэснээр хэрэглэгч нууцлагдсан файлыг харах командыг хэрэгжүүлэх боломжгүй болгоно.

7. Нууцлагдсан төлөвтэй файлыг хэрэглэгч харахгүй болгоно.

8. Системийн файл хайдаг цэсийг харагдахгүй болгоно. Ингэснээр хэрэглэгч вирусыг хайж олох явдалд саад учируулна.

9. Түгээмэл хэрэглэгддэг програмууд болон системийн програмуудыг ажиллахгүй болгон блоклоно. Тухайлбал: taskmgr.exe,regedit.exe, cmd.exe, msconfig.exe, mmc.exe, rundll32.exe, ntvdm.exe, rstrui.exe, notepad.exe, wordpad.exe, winword.exe, excel.exe, photoshop.exe, wmplayer.exe.

Page 23: Reverse code engineering  voidman virus analysis

Вирусын функцын урсгал:

10. “Sainuu. Tanid ene odoriin mendiig hvrgie”

гэсэн мессеж бүхий цонхыг хугацааны

богино интервалаар гарган хэрэглэгчийг

дарамтлах

Page 24: Reverse code engineering  voidman virus analysis

Вирусын функцын урсгал:11. CDROM уншигчыг нээнэ.

12. Өөрийгөө үйлдлийн систем асангуут автоматаар ажиллуулдаг тохиргоог системд хийнэ.

13. Системийн дэлгэц амраагчыг Урсдаг текст (Marque) болгон түүний гүйх текстийг нь “--VM13 huvilbar 1.0.2 –” болгон холбогдох фонт, хэмжээ, өнгөний тохиргоог хийж гүйцэтгэх ба дэлгэц амраагчын гарч ирэх хугацааг 2 минут болгоно.

14. Компьютерийг унтраах команд бүхий res.bat файлыг үүсгэх ба түүнийг ажлуулах.

Page 25: Reverse code engineering  voidman virus analysis

Вирусын дизассемблын хэсэг: Уг хэсэг нь системийн чухал програмуудыг блоклох

болон дарамтлах мессежийг харуулж буй хэсэг юм.CODE:00470935 mov eax, offset _str_Taskmgr_exe.Text ; taskmgr.exeCODE:0047093A call sub_46FDBCCODE:0047093F cmp ds:dword_474C2C, 0C8hCODE:00470949 jnz short loc_47098DCODE:0047094B mov eax, offset _str_WinWord_exe.Text ; winword.exeCODE:00470950 call sub_46FDBCCODE:00470955 mov eax, offset _str_Excel_exe.Text ; excel.exeCODE:0047095A call sub_46FDBCCODE:0047095F mov eax, offset _str_Photoshop_exe.Text ; photoshop.exeCODE:00470964 call sub_46FDBCCODE:00470969 mov eax, offset _str_Wmplayer_exe.Text ; wmplayer.exeCODE:0047096E call sub_46FDBCCODE:00470973 push 10h ; uTypeCODE:00470975 push offset aVoidmanVirusXu ; "\"VoidMan\" virus - xuvilbar 1.0.2 -

"...CODE:0047097A push offset aSainuuTandEneO ; " Sainuu tand ene odoriin mendiig

hvrgie"...CODE:0047097F push 0 ; hWndCODE:00470981 call MessageBoxA_0 ; MessageBox haruulahCODE:00470986 xor eax, eax

Page 26: Reverse code engineering  voidman virus analysis
Page 27: Reverse code engineering  voidman virus analysis
Page 28: Reverse code engineering  voidman virus analysis

Вирусын анализ хийхийн тулд аюулгүй орчинг үүсгэх хэрэгтэй. Холбогдох хэрэгсэлүүдээр тоноглож лабораторын орчин үүсгэх хэрэгтэй.

Хэрэв бидэнд кодын ре-инженерингийн мэдлэг хангалттай байвал тухайн “VoidMan” вирусыг нэг долоо хоногын хугацаанд бүрэн ре-инженерчлэх боломжтой.

Ассембл кодыг ойлгож, бүлэглэж, ингэснээр функциональ шинж байдлыг нь тодорхойлж болно.

Вирусууд нь ихэвчлэн өмнөх хувилбар дээрээ суурилж хийгддэг тул кодын ре-инженерингийг ашигласнаар дараачын хувилбаруудыг цаг алдалгүй эсэргүүцэх, сэргийлэх боломжыг олгоно.

Page 29: Reverse code engineering  voidman virus analysis

[1] E. J. Chikofsky and J. H. Cross, II, “Reverse Engineering and Design

Recovery: A Taxonomy,” IEEE Software, vol. 7, no. 1, pp. 13-17, January

1990.

[2] ~intropy~. Intro to Reverse Engineering. Defcon Groups DC214, Oct 2005.

[3] B. Paul. A Case Study of Malicious Code (malware) and Detection

Mechanisms. http://www.geocities.com/paul_biswajit/malware.pdf.

[4] Duygu Karaoglan, Murat Ergun, Can Yucel. Introduction to Malware. (CS

532 Research Presentations by Students) CS 432/532 - Computer and

Network Security. Sabancı University, Istanbul, Turkey.

[5] A. Sulaiman, K. Ramamoorthy, S. Mukkamala, A. H. Sung. Malware

Examiner using Disassembled Code (MEDiC). Proceedings of the 2005

IEEE, Workshop on Information Assurance and Security, United States

Military Academy, West Point, NY.

[6] Paul deGrandis. Reverse Engineering. CS675 Software Reverse

Engineering, Department of Computer Science, Drexel

University, Philadelphia, PA 19104, USA.

Page 30: Reverse code engineering  voidman virus analysis

[7] Kris Kendall. Practical Malware Analysis. Black Hat USA 2007, Las Vegas.

[8] Seokwoo Choi. Malware Analysis via Sandboxing.

http://ropas.kaist.ac.kr/seminar_resources/han/2008/source/20080213.ppt.

[9] Sandbox. http://en.wikipedia.org/wiki/Sandbox_(computer_security).

[10] IDA Pro: http://www.datarescue.com/idabase/overview.htm;

[11] PEiD: http://peid.has.it/;

[12] DeDe: http://www.softpedia.com/get/Programming/Debuggers-

Decompilers-Dissasemblers/DeDe.shtml;

[13] vmWare Workstation: http://www.vmware.com/products/ws/;

[14] МSDN сан: http://msdn.microsoft.com/library/;

[15] IA-32 Intel Architecture Software Developer’s Manual, Volume

2, Instruction Set Reference;

[16] Asuult.net форум:

http://www3.asuultserver.com/forum/viewtopic.php?p=4388360&highlight=#

4388360;

Page 31: Reverse code engineering  voidman virus analysis

Асуулт, хариулт?