XÜSUSİ RABİTƏ VƏ İNFORMASİYA
TƏHLÜKƏSİZLİYİ DÖVLƏT XİDMƏTİ

KOMPÜTER İNSİDENTLƏRİNƏ QARŞI MÜBARİZƏ MƏRKƏZİ

İnsident bildir

Məqalələr > Antivirusların iş prinsipi və Malware Analizi.

15 May 2014

KİMM Lab olaraq bu gün sizlərə Antivirusların ümumi iş prinsipi və malware sample-ların necə analiz edildiyini göstərəciyik.

Malware dedikdə ilk öncə fikrimizə gələn zərərli proqram təminatlarıdır. Günü gündən yenilənən viruslar,troyanlar,cəsus proqram təminatları və bunlarla yanaşı rootkitlər,0-day boşluqlar həyatımızda “öz yerini alır”. Bu tip hücümlardan qorunmaq üçün bizlər Antivirus proqram təminatlarından istifadə edirik. Bəs sizə heç maraqlı gəlib ki, bu tip analiz laboratoriyaları necə işləyir ? Yəni sizin təhlükəsizliyinizi necə qoruyur? Bir çox kompüter istifadəçiləri hələdə Antivirusların iş prinsipləri barədə məlumatsızdırlar. Düşünürlər ki, Antivirus istifadə edirəmsə artıq təhlükəli heçnə ola bilməz. Lakin nəzərinizə çatdırırıq ki, bu belə deyil. Bu belə olsaydı onda əmin olun daim yenilənən Antivirus proqramlarına ehtiyacımız olmazdı. Bunun sizə lakonik olaraq necə işlədiyini izah edək. 

Necə olur viruslar yayılır?
Güclü proqramlaşdırma qabiliyyətinə malik olan pis niyyətli insanlar öz pis niyyətlərini həyata keçirtmək üçün ideyalarını maşın dilinə çevirib zərərvericilər hazırlayıb internetdə yayır və ya hədəflərinin yoluxması üçün müxtəlif yayma, yoluxma üsullarından istifadə edirlər. Yayılma üsulları isə müxtəlif ola bilər. Bu bəzən e-mail ünvanınıza gələn spam tərkibli məktublardan, yükləmə portallarından ola bilər. Bəzən isə güvəndiyiniz web saytlardan ActiveX-lar şəklində yoluxmalar da mövcud ola bilər. Məşhur Antivirus şirkətlərindən birinin apardığı statistikaya görə adı çəkilən Antivirus şirkəti gün əzrində 200 000-ə yaxın malware sorğusu qəbul edir. Təsəvvür edin təhlükəsizliyimiz üçün yüksək ixtisaslı mütəxəsislər gündə 200 000 faylı analiz edib onlarım signaturalarını virus bazasına əlavə edirlər. Analiz əməlliyatı ilə sizləri bir az sonra tanış edəcəyik.

Sizə tez-tez verilən suallardan birini təqdim edirik. "Antiviruslar virusları necə tanıyır?"
Bunun çox sadə bir cavabı var. Bu antivirusların funksionallağı və aktiv istifadəçilərin səyi nəticəsində həyata keçir. 
Bizim nə rolumuz var?
Yuxarıda qeyd etdiyimiz kimi pis niyyətli proqramçı "0 day" virus hazırlayır, və onu internetdə yayır. Bu virusa yoluxan aktiv istifadəçilər isə Antivirusların işləmə prinsipindən xəbərdar olduğu üçün faylı(sample) dərhal analiz üçün bazaya göndərir. Hər bir Antivirus proqram təminatının virusları(0-day) qəbul eləmək üçün xüsüsi bölmələri var. Antivirus adı + send samples birləşməsi yazmaqla təhlükəli hesab etdiyiniz faylları Antivirus labaratoriyalarına göndərə bilərsiniz.

 

Bəli məhz sizin bu səhifədən göndərdiyiniz fayllar əsasında Antiviruslar "0 day" virusları tanıyır. Əlbətdə  tanıma üsulu sadəcə bu deyil. Antivirus şirkətləri yalnız istifadəçilərdən gələn fayllara ümid bəsləmir özləri Honeypot sistemləri quraraq yenilənən virusları qeydə alırlar. 

Bəs necə olur Antiviruslar komputerinizdəki virusları aşkar edir? 
Bunlar signature(imza) adı verilən xüsusi kod hissələri sayəsində olur. Analiz zamanı virusların içərisindən götürülən (diqqət unutmayın sırf o virusa məxsus)bu kod hissələri məlumat bazasına əlavə edilir. Siz Antivirusunuzu yenilədiyiniz zaman bu imzalar artıq sizin komputerinizə köçürülür. Məhz bunun sayəsində sizin Antivirus proqramı yenilənən virusları tanıya bilir. Əgər yoluxduğunuz virus signaturası sizin istifadə etdiyiniz Antivirus proqramının laboratoriyasında mövcud deyilsə həmin virus sizin AV tərəfindən aşkar (detect) olunmayacaq.

CERT olaraq şübhələndiyimiz bir neçə faylı Antivirus labaratoriyasına göndərdikdən sonra aldığımız cavab:

Faylın virus olub-olmadığı necə aşkar edilir?
İndi sizlərə virus analiz laboratoriyasının necə işlədiyini izah edəcəyik. Bu hissədən sonra əminik ki, antiviruslar haqqında təsəvvürünüz daha geniş olacaq. Bu yaxınlarda surf zamanı ziyarət etdiyimiz saytların birində bu tip mesajla qarşılaşdıq.

Comodo Secure DNS istifadə etdiyimiz üçün COMODO (Comodonun bazasında olan və ya xüsusi yoxlama(scan) üsulları ilə zərərli koda rast gəldiyi üçün) həmin saytı blok etdi. Bizə də maraqlı gəldi və COMODO DNS müvəqqəti deaktiv edib saytdan zərərli faylı yüklədik və başladıq analizə etməyə. İlk öncə fayl haqqında qısa məlumat almağa çalışdıq.

C:\Users\home-lab\Desktop\eh.exe>dir

Volume in drive C has no label.
Volume Serial Number is D87A-F0F7

Directory of C:\Users\home-lab\Desktop\eh.exe

05/09/2014 10:07 AM <DIR> .
05/09/2014 10:07 AM <DIR> ..
12/19/2012 01:15 AM 36,352 eh.exe
1 File(s) 36,352 bytes
2 Dir(s) 138,695,000,064 bytes free

C:\Users\home-lab\Desktop\eh.exe>filetype eh.exe
eh.exe "DosExe" (.exe DOS EXE)

C:\Users\home-lab\Desktop\eh.exe>md5sum eh.exe
ea24f9297d11023076d9b10de14d15ec *eh.exe

C:\Users\home-lab\Desktop\eh.exe>stat eh.exe
File: `eh.exe'
Size: 36352 Blocks: 72 IO Block: 4096 regular file
Device: d87af0f7h/3631935735d Inode: 2814749767161348 Links: 1
Access: (0777/-rwxrwxrwx) Uid: ( 0/home-lab) Gid: ( 0/ UNKNOWN)
Access: 2014-05-09 10:07:26.185610800 +0500
Modify: 2012-12-19 00:15:06.000000000 +0400
Change: 2014-05-09 10:07:26.185610800 +0500


Gördüyünüz kimi DosEXE(PE) fayl formatı.
MD5 Hash sum-ınıda qeyd etdik.

Belə ki, sonra artıq analizimizi Virtual LAB şəraitində keçirəciyik.
Bunun üçün VirtualBox,Qemu,Bosch,Vmware kimi virtuallaşdırma proqram təminatlarından istifadə edə bilərik. Biz ilk öncə WinDBG ilə PE bölmələri haqqında məlumat alırıq.

Burda nə diqqətimizi çəkdi?
SECTION HEADER adları ! ! !
Normal PE Executable - larda olan SN-ə uyğun gəlmirdi.

<sez0 və oup1>
Bundan sonra Sectionlar haqqında məlumat almağa çalışdıq və proqrama biraz göz gəzdirdikdən sonra artıq bizə hər şey bəlli oldu.
Proqramımız UPx Packer ilə pack olunmuşdu.

Əslində yuxarıda gordüyünüzdə UpX sectionları idi. Sadəcə olaraq rename edilmişdi.
Niyə?
Bu çoxdan istifadə olunan texnikadır. Dəyişdirilən SN-ə görə UPx unpacker faylı orginal vəziyyətinə qaytarıla bilmir və exception gedir. 
Bəs Upx nə işə yarayır? Ümümiyyətlə packerlər adından da gördüyünüz kimi sıxışdırma rolunu oynayır. Faylları sıxışdırıb həcmlərini azaldır. Bunun nəticəsində də import olunmuş modullar, stringlər və s. analiz zamanı analitikə aydın olmur. Nəisə çox kiçik bir edit əməliyyatından sonra faylımız əvvəlki vəziyyətinə qaytara bildik.

SECTION HEADER #1
UPX0 name
SECTION HEADER #2
UPX1 name

81920 <- 36352 44.38% win32/pe upx4.tmp
Unpacked 1 file.

IV şəkillə müqayisə edin. Gördüyünüz kimi Entry Point proqramın başlama ünvanı dəyişdi. Həmçinin Sectionlarımızda istədiyimiz vəziyyətə gəldi. Artıq dinamik analizə başlaya bilərik. Amma əvvəlcə gəlin qısa olaraq (məruzə) import edilmiş modullara göz gəzdirək.
0:000> lm
start end module name
00400000 00423000 image00400000 C (no symbols)
77c10000 77c68000 MSVCRT (deferred)
77dd0000 77e6b000 ADVAPI32 (deferred)
77e70000 77f02000 RPCRT4 (deferred)
77f10000 77f59000 GDI32 (deferred)
77fe0000 77ff1000 Secur32 (deferred)
7c800000 7c8f6000 kernel32 (pdb symbols) c:\windows\symbols\dll\kernel32.pdb
7c900000 7c9af000 ntdll (pdb symbols) c:\windows\symbols\dll\ntdll.pdb
7e410000 7e4a1000 USER32 (deferred)
Funksiyalarımız.

Bundan sonra Registry Snapshot götürürük.
Proqramı işə salandan sonra hansı dəyişiklikləri etdiyini görmək üçün.
Values deleted: 1
HKLM\SOFTWARE\Classes\CLSID\{E6FB5E20-DE35-11CF-9C87-00AA005127ED}\InProcServer32\: "%SystemRoot%\system32\webcheck.dll"
Values added: 1
HKLM\SOFTWARE\Classes\CLSID\{E6FB5E20-DE35-11CF-9C87-00AA005127ED}\InProcServer32\: "C:\WINDOWS\system32\6307159.DEP"
Files added: 2
C:\WINDOWS\Prefetch\SC.EXE-012262AF.pf
C:\WINDOWS\system32\6307159.DEP
Files [attributes?] modified: 2
C:\Documents and Settings\Cert\NTUSER.DAT.LOG
C:\Program Files\Common Files\rkdltecq\qioihz.pif

Burda qırmızı rənglə işarə edilmiş bölmələr faylın etdiyi dəyişikliklərdi.
Diqqətimizi çəkən bir şey webcheck.dll (Web monitoring üçün kitabxana faylıdır) onun özünün yaratdığı "suspicous" fayl ilə dəyişdirməsidir. Bu fayl İnternet Explorer(Explorer.exe) üçün nəzərdə tutulub.

Əslində proqramın sadə olduğunu fikirləşirdik amma tam əksi oldu. Özünü olduqca gözəl şəkildə yuxarıda qeyd etdiyimiz üsul ilə "Autorun"a yazmışdı(DLL İnject) və nəinki normal hətta Sysİnternals Autoruns utiliti ilə də izlərə rast gəlmək mümkün deyildi. GMER - in köməkliyi ilə lazımı açarları tapdıq.

Amma troyanın işlədiyindən əmin idik. Səbəbi isə aşağıda gördüyünüz şəkildir. Bundan sonra isə +Process Environment Blockunu+ dump (!peb və ya dt ntdll!_peb) edib yüklənən modullara baxdıqda isə artıq hər şey açıq aydın görünürdü. Normalda webcheck.dll IE + explorer.exe üçün modul olaraq load olunur. Bu dəfə isə webcheck.dll əvəzinə troyanın modulu load olunurdu. Bunu WinDbg ilə də kiçik trace edib görə bildik. DynamicLinkLibrary inject olunmuşdu.

Explorer.exe *** portda socket yaratmışdı və listen modda idi. Belə ki, explorer.exe işə düşdüyü zaman əsas modullar işə düşmürdü. Şübhə yaratmamaq üçün sleep komandasından istifadə edərək 0Ah(41) saniyə gözləyirik. Bundan sonra isə növbəti socket yaratmaq üçün lazımı modullar load olunur. Sonra isə zərərli proqramımızı İDA Pro ilə load edib daha dəqiq analizə keçdik. İda bizə proqramın nələr etdiyini göməyimizə imkan yaradacaq. Diqqətimizi çəkən ilk şey “net stop policyagent” stringini CmdLine adlı dəyişənə kopyalayaraq daha sonra WinExec subprosesinin köməkliyi ilə bu kodu terminaldan işə salması idi.

İpsEC(İnternet Protocol Security) xidməti sistem üçün olduqca mühüm əhəmiyyətlidir. Belə ki, servis İnternet Protokolunu həm autentifikası həmdə şifrələməsi üçün lazımdır. Yəni İP təhlükəsizliyi üçündür. Daha sonra isə diqqətimizi çəkən növbəti maraqlı funksiya zərərlinin yoluxma üsulu idi. 
Ətraflı məlumat şəkildə.

Bütün bunlardan sonra isə zərərli FindFirstFile + FindNextFile funksiyalarının köməkliyi ilə Cari flash sürücüdə olan qovluqları File attributlarını dəyişməklə hidden moda salır və həmin qovluq adında yeni PE Executable fayl yaradır və özünü həmin faylın içərisinə kopyalayır. Əslində aşağıdakı şəklə diqqət yetirsəniz tam dəqiq olaraq nə demək istədiyimizi başa düşəcəksiniz.

Düşünürük ki, yoxlama üsulu haqda konkret informasiyalar əldə edə bildiniz.Keçirik növbəti əməliyyat barədə məlumat verməyə. DeleteUrlCacheEntry.İnternet Explorer başda olmaq üzrə (Yüklənən fayllar,surf edilmiş url ünvanları) komputerin cachesində (keşində yaddaş bölməsində ) (index.dat) saxlanılır. Bunlardan sonradan aparılacaq testlər(analizlər) zamanı istifadə olunacaq.

Zərərli proqram burada məntiqli bir üsuldan istifadə edir. Əgər yoluxan istifadəçi zərərli faylı internet üzərindən yükləyibsə deməli fayl (downloading olduğu link) keşdə saxlanılacaq. Daha sonra mütəxəsislər həmin urlu yəni troyanın olduğu saytı keşin sayəsində tapa bilərlər. Troyanımız bunun qarşısını almaq üçün DeleteUrlCacheEntry funksiyası ilə keşdən yuxarıda sadaladıqlarımızı təmizləyəcək. Proqramın internet üzərindən aşağıdaki, url-dan FileDownload(konfiqurasiya) etmək istəyi tərəfimizdən qeydə alındı. Yüklənən fayl temp\org.ini faylına yazılır. İnternetRead.


Server aktiv olmadığı üçün və bu qədər dəlildən sonra Honeypot qurmağa da ehtiyac qalmadığı üçün bunu etmirik. Növbəti məqalələrimizdə sizlərə Honeypot texnikasını da tam olaraq başa salacağıq. Xatırladaq ki,yuxarıda gördükləriniz Modula aid idi. Proqram System Prosesleri(name) ilə egui.exe və ekrn.exe adlarını(Eset NOD32 Antivirusa aid) qarşılaşdır və test EAX,EAX True olacağı təqdirdə prosesi yuxarıda dediyimiz üsul ilə kill etməyə cəhd göstərir. Burda tam olaraq bizə aydın oldu ki, proqram sırf Assembler dilində yazılıb. Onuda nəzərinizə çatdıraq ki, Anti-Debug texnikası olaraq breakpointlərlə işləməyə mane olmaq üçün sleep-dən istifadə edilib. Lakin hər halda BreakPointdən olduqca az istifadə eliyib kodları translate edə bildik.

Ekrn.exe ilə system proseslərinin qarşılaşdırılması.