SOC komandası “Mərkəzləşdirilmiş Antivirus Sistemi”-nin bir neçə İcra Hakimiyyətində şübhəli əməliyyatlar aşkarladığını bildirdikdən sonra anomaliyaları araşdırrmaq üçün laboratoriya sözü gedən dövlət qurumlarında analizlərə başladı. SOC komandası şəbəkə aktivlikləri zamanı bəzi adreslərə normadan çox sorğular getdiyini haqqında məlumat təqdim etmişdi. Qurumların əsas şikayətləri isə kompüterlərin naməlum səbəblərdən vaxt aşırı restart getməsi, USB sürücülər daxil edilərkən tərkibinin anormal şəkildə dəyişməsi və s. idi.
Analiz prosesinə başladıqdan sonra yoluxmuş kompüterlərdə diqqətimizi çəkən ilk şübhəli məqam sistemdə fəaliyyət göstərən 4 ədəd proses oldu.
Brontok.A
Olduqca köhnə olan bu virus təssüflər olsun ki, dövlət qurumlarında hələdə fəaliyyət göstərirdi. Virusun yayılma səbəbi olaraq narkotiklər ilə mübarizə vXatırladaq ki, zərərverici aşkar edilən kompüterlərdən tərəfimizdən silinmişdir.
İndoneziya mənşəlli komputer soxulcanı-nın müxtəlif versiyaları mövcuddur.
- A
- D
- F
- G
- H
- I
- K
- Q
- U
- BH
Virusun ən çox yayıldığı ölkələr arasında Azərbaycan Respublikası da qeyd edilmişdir (Wikipedia - The most affected countries were Russia, Vietnam and Brazil, followed by Spain, Mexico, Iran, Azerbaijan, India and the Philippines).
Wikipedia qeyd edilən məlumatlar əsasında aşağıdakılar ilkin araşdırma zamanı virus haqqında bizə bəzi ipucular verdi.
- Virus sistem başladılması zamanı avtomatik işə düşmək üçün özünü reyestr yazır
- Sistemdə olan faylların içərisindən poçt adreslərini oğurlayır və sözü gedən ünvanlara özünü yaymaq üçün bir kopyasını göndərir
- CMD və Registry kimi alətləri blok edir və qovluq sazlamalarını deaktiv edir
- Bir neçə adresə DOS hücümlar edir
Yuxarıda qeyd edilənləri dəqiqləşdirmək üçün zərərvericini daha yaxından analiz etdik.
İlkin kəşfiyyat
Faəliyyət göstərən nüsxələri əldə etdikdən sonra sözü gedən nüsxələrin eyni xeş dəyəri sahib olduqlarını təyin etdiyimiz üçün analiz prosesi 1 nüsxə üzərindən aparılacaqdır.
32 bit arxitektura malik və 127 KiB həcmində PE faylı Visual Basic (6) dilində yazılıb və sıxışdırılmışdır. PE faylı 4 bölmədən ibarətdir.
- .text
- .data
- .rsrc
- .sdata
Nüsxə içərsində saxlanılan mətnlər arasından analiz etdiyimiz zərərvericinin Brontok.A versiyası olduğu aşkar edildi. Bu yazılan ilk versiyadır.
Zərərverici haqqında ümumi məlumatlar (fayl sistemi, reyestr, şəbəkə və s.) əldə etmək məqsədi ilə dinamik analiz prosesinə başladıq. Bunun üçün zərərvericinin təhlükəsiz mühitdə işə salaraq kəşfiyyat üçün dəyərli məlumatlar əldə etdik.
Proses aktivlikləri
Proses aktivlikləri zamanı zərərvericinin işə salınandan sonra bir neçə alt prosesi (child) işə saldığının şahidi olduq.
Burada 4 ədəd eyni xeş dəyərə sahib proses görsənir. Bütün proseslər eyni qovluq altında işə salınır. “%HomeDrive%\Users\Admin\AppData\Local”.
- smss.exe
- winlogon.exe
- lsass.exe
- inetinfo.exe
Bu proseslər əsas nüsxədən törəmiş lakin fərqli əməliyyatlar aparırdılar. Diqqətimizi çəkən növbəti məqam zərərvericinin at komandası ilə sistemdə yeni planlaşdırılan tapşırıq yaratması oldu.
(at 17:08 /every:M,T,W,Th,F,S,Su "C:\Users\Admin\AppData\Roaming\Microsoft\Windows\Templates\A.kotnorB.com").
Planlaşdırılmış tapşırıqları yaratmaq və silmək üçün at koandasından istifadə etməsi zərərvericinin köhnə əməliyyat sistemləri üçün yaradıldığına işarə edirdi.
NET VIEW komandası ilə paylaşılan qovluqlar, domenlər haqqında məlumat almağa çalışır.
Fayl sistem aktivlikləri
Zərərverici ilk olaraq aşağıdakı fayllara öz kopyasını köçürür.
- C:\Windows\inf\norBtok.exe
- C:\Users\Admin\AppData\Local\winlogon.exe
- C:\Users\Admin\AppData\Local\smss.exe
- C:\Users\Admin\AppData\Local\csrss.exe
- C:\Users\Admin\AppData\Local\inetinfo.exe
- C:\Users\Admin\AppData\Local\services.exe
- C:\Users\Admin\AppData\Roaming\Microsoft\Windows\Templates\A.kotnorB.com
- C:\Windows\System32\3D Animation.scr
Bu fayllardan "C:\Users\Admin\AppData\Roaming\Microsoft\Windows\Templates\A.kotnorB.com" at komandası ilə təyin edilən vaxtda işə düşməsu üçün planlaşdırılan tapşırıqlar siyahısına yazılır.
Sistemə başladılması zamanı avtomatik işə düşmək üçün açağıdakı əməliyyatları icra edir.
- pif faylını StartUp qovluğuna köçürür
- Lokal (HKLM) və cari istifadəçi (HKCU) üçün HKLM/HKCU\Software\Microsoft\Windows\CurrentVersion\Run açarına aşağıdakı məlumatları yazır. Bron-Spizaetus: C:\Windows\inf\norBtok.exe və Tok-Cirhatus: C:\Users\Admin\AppData\Local\smss.exe
Reyest aktivlikləri
Avtomatik işə düşmədən əlavə olaraq burada “HKCU\software\microsoft\windows\currentversion\Policies\System” açarı altında 3 vacib dəyişiklik edir.
- Command Promt (CMD) –ni deaktiv etmək üçün DisableCMD
- Registry Tools (regedit.exe) –ni deaktiv etmək üçün DisableRegistryTools
- Və qovluq sazlamalarının qarşını almaq üçün (gizli qovluqlar ilə bağlı politikalarda dıyişiklik edilməsinin qarşısını almaq) NoFolderOptions açarlarını yaradır.
Şəbəkə aktivlikləri
Zərərvericiyə aid şəbəkə loqlarında www.geocities.com adresinə 1 ədəd HTTP sorğu aşkarladıq. 2 ədəd URL-ə sorğu ünvanlanırdı.
/jowobot123/BrontokInf.txt
/jowobot123/Bron-ID3.txt
Zərərverici haqqında qısa kəşfiyyat topladıqdan sonra daha dərin analiz prosesinə başladıq. Zərərvericinin Visual Basic-də hazırlandığını bildiyimiz üçün decompile etməyə cəhd etsəkdə ilk cəhd uğursuzluqla nəticələndi. Bunun səbəbi əsas nüsxənin sıxışdırılması idi. Bu dəfə debugger ilə kodları trace edərək unpack əməliyyatını diqqətlə izlədik və trace əməliyyatı bizi lazım olan hissəyə gətirdi. Bu hissədə unpack edilən faylı dump etdik və uğurla decompile etməyi bacardıq. Zərərverici Virtual maşın kodların (P-CODE) istifadə edirdi.
İlk olaraq istifadə edilən prosedurların siyahısını əldə etdik.
Bundan əlavə olaraq zərərverici 7 ədəd DLL və bu kitabxanalara aid 37 api funksiyasından istifadə edirdi. Funksiya adlarını dilimizə tərcümə etdiyimiz zaman bizə funksiyaların hansı işləri gördükləri haqqında ipucu verirdi.
kernel32: [FindClose, GetFileAttributesA, FindNextFileA, FindFirstFileA, RtlMoveMemory, GetDriveTypeA, GetCurrentProcess, Sleep]
wsock32.dll: [WSAAsyncSelect, WSACleanup, WSAStartup, gethostbyname, socket, send, recv ,inet_addr, htons, connect, closesocket]
shell32.dll: [ShellExecuteA, SHGetSpecialFolderLocation, SHGetPathFromIDList]
advapi32: [AdjustTokenPrivileges, LookupPrivilegeValueA, OpenProcessToken]
user32: [ExitWindowsEx, GetForegroundWindow, GetWindowTextLengthA, GetWindowTextA]
wininet.dll: [InternetCloseHandle, InternetReadFile, InternetOpenUrlA, InternetOpenA]
advapi32.dll: [RegCreateKeyExA, RegCloseKey, RegSetValueExA, RegOpenKeyExA]
Zərərvericiyə aid mətnlər bölməsində kodlaşdırılmış mətnlər diqqətimizi çəkdi. Bu mətnlər DecTeks adı verilən prosedur içərisində düz mətn halında gətirilib zərərverici tərəfindən istifadə edilirdi.
Zərərverici 2 əsas funksiya istifadə edir. İlk işə düşdüyü zaman icra ediləcək (main) Form_Load və daimi fəaliyyət üçün (loop) Timer funksiyası TmrBrontok_Timer.
Decompile əməliyyatını çətinləşdirən vacib məqamlardan biri məhz DecTeks funksiya idi.
Buna görə ilk olaraq bu funksiya analiz edilərək kodlaşıdırlmış mətnləri hansı metod ilə açdığını öyrəndik və bu əməliyyatı kiçik python skripti ilə avtomatlaşdıraraq bütün kodlaşıdırılan mətnlərin açıq formasını əldə etdik.
Public Function DecTeks(GetTeks, DecInt)
Dim var_C0 As String
var_8C = GetTeks
On Error Resume Next
var_90 = 0
If (Len(var_8C) < 1) Then
GoTo loc_409343
End If
For var_9A = 1 To CInt(Len(var_8C)): var_96 = var_9A
var_C0 = ChrW$(CLng((AscW(Mid$(var_8C, CLng(var_96), 1)) - DecInt)))
var_90 = var_90 & var_C0
Next var_9A
var_88 = var_90
DecTeks =
End Function
Funksiya 2 ədəd parameter qəbul edir. Kodlaşdırılmış mətn və 1 ədəd integer. Funksiya mətnin hər bir xarakterindən 2-ci parametr ilə gələn rəqəmı çıxır (mətn sürüşdürmə) və açıq xarakter əldə edilir. Bu baxımdan ROT13 metodu ilə bənzərlik göstərir.
Sözü gedən deşifrləmə əməliyyatını icra edən python skripti:
def Decrypt(data, DecInt):
z = ""
for x in data:
z += chr(ord(x) - DecInt)
return z
Əldə edilən açıq mətnlər:
Zərərli əməliyyatları icra etmək üçün Brontok aşağıdakı kitabxanalar və onlar tərəfindən ixrac edilən funksiyaları istifadə edir.
kernel32.dll: [Sleep, GetCurrentProcess, GetDriveTypeA, RtlMoveMemory, FindFirstFileA, FindNextFileA, GetFileAttributesA, FindClose]
wsock32.dll: [ WSAAsyncSelect, WSACleanup, WSAStartup, gethostbyname, gethostbyname, send, recv, inet_addr, htons, connect, closesocket]
shell32.dll: [ShellExecuteA, SHGetSpecialFolderLocation, SHGetPathFromIDList]
advapi32.dll: [AdjustTokenPrivileges, LookupPrivilegeValueA, OpenProcessToken, RegCreateKeyExA, RegCloseKey, RegSetValueExA, RegOpenKeyExA]
user32.dll: [ExitWindowsEx, GetForegroundWindow, GetWindowTextLengthA, GetWindowTextA]
wininet.dll: [InternetCloseHandle, InternetReadFile, InternetOpenUrlA, InternetOpenA]
Prosedurlar
InfekNetwork - funksiyası ilə zərərveric hədəf sistemdə paylaşılmış qovluqlar üzərindən özünü yaymaga çalışır. İlk olaraq WinNT provayderi üzərindən domanlərin siyahısını alır. Daha sonra paylaşılan qovluqların siyahısını götürəcək batch əmri (NET VIEW ) BikinFile (parametr olaraq gələn fayla, 2-ci parametr olaraq gələn məlumatı yazır) funksiyası ilə BronNetDomList.bat faylına yazır və işə salır. Daha sonra əmrin nəticələrini təhlil edərək paylaşılan qovluqlara özünün kopyasını Data [%username%].exe və [paylaşılan qovluq adı].exe olaraq yazır. Test üçün yoluxan kompüterdə paylaşılan qovluq.
var_F0 = GetObject("WinNT:", var_E0)
For Each var_90 In var_F0
For Each var_94 In GetObject("WinNT://" & var_90.Name, var_F0)
var_98 = CStr("\\" & var_94.Name)
If (UCase$(var_98) <> "\\SCHEMA") Then
var_11C = Me.Global.App
var_9C = 0 & "NET VIEW " & var_98 & " >> " & ChrW$(&H22) & App.Path & "\BronFoldNetDomList.txt" & ChrW$(&H22) & vbCrLf
End If
Next
Next
BronReg – funksiyası ilə zərərverici Regedit, CMD, Qovluq sazlamalarını deaktiv edir, növbəti sistem başladılmasında avtomatik işə düşmək üçün reyestrdə lazım olan açarları yaradır və özünü StartUP qovluğuna kopyalayır.
var_8C = DecTeks("GlvdeohUhjlvwu|Wrrov", 3)
var_90 = DecTeks("GlvdeohFPG", 3)
var_94 = DecTeks("QrIroghuRswlrqv", 3)
Call StartDong(-2147483647, global_176, var_8C, 0)
CekKoneksiInternet – funksiyası ilə yoluxan sistemin internetə çıxışı olub-olmadığını soket (gethostbyname) üzərindən test edir.
GetHostByNameAlias("google.com") <> -1)
GetHostByNameAlias("yahoo.com") <> -1)
CekRemDisk – ilə ilk olaraq sistemdə aktiv disklərin siyahısını (Proc_0_38) əldə edir. Tipi 2 (DRIVE_REMOVABLE) disklərə özünü Data [%USERNAME%].exe olaraq kopyalayır.
BikinKredit – ilə istifadəçiyə müxtəlif aralıqlala göstəriləcək mesaj (.html) faylını istifadəçi şəkillərinin saxlanıldığı (CSIDL_MYPICTURES ) qovluğuna "[CSIDL_MYPICTURES ]\about.Brontok.A.html" olaraq kopyalayır.
SmallAttack – funksiyası ilə zərərverici 2 domenə ( israel.gov.il, playboy.com) ICMP protokolu üzərindən kiçik həcmli hücüm (DOS) ping əmrini ShellExecute vasitəsi ilə işə salır.
Shell(CVar(DecTeks("slqj#lvudho1jry1lo#0q#583#0o#:7:", 3)), 0)
Shell(CVar(DecTeks("slqj#sod|er|1frp#0q#583#0o#:7:", 3)), 0)
KeluarDong – funksiyası daimi fəaliyyət göstərən Timer funksiyası (TmrBrontok_Timer) içərisində çağrılır. Zərərverici daimi olaraq windows pəncərələrinin siyahısı əldə edir və GetWindowTextA dəstəyi ilə pəncərə adlarını götürür və global_160 ( [REGISTRY, SYSTEM CONFIGURATION, COMMAND PROMPT, .EXE, SHUT DOWN, SCRIPT HOST, LOG OFF WINDOWS] ) ilə qarşılaşdırır (mətnin içərisində). Əgər nəticə müsbət olarsa KeluarDong funksiyasını çağırır. Bu funksiya öz növbəsində Proc_0_39 funksiyasını çağıraraq özünə LookupPrivilegeValue ilə "SeShutdownPrivilege" imtiyazını təyin edir və ExitWindowsEx ilə sistemi yenidən başladır. Beləliklə istifadəçi səhvən CMD, msconfig, regedit və s. alətlərini açarsa və ya adında .exe olan hər hansı bir web sahifə olarsa zərərverici özünü qorumaq üçün sistemi yenidən başladır.
Call Proc_0_39_408F2C()
ExitWindowsEx(7, -1)
Exit Sub
Update mexanizmi
Zərərverici özünü yeniləmək üçün DownloadVir funksyasını çağırır. Bu funksiya içərisində ilk olaraq “hxxp://www.geocities.com/jowobot123/BrontokInf.txt” adresindən wininet.dll ilə məlumat endirir.
Endirilən məlumat içərisində (sətirləri təhlil edərək) “http” ilə başlayan ünvan movcuddursa bu ünvandan yeni zərərli yükü sistemə endirir və işə salır.
Yoluxma mexanizmi
Zərərverici InfekNetwork funksiyasına əlavə olaraq yayılmaq üçün daha 2 metod istifadə edir. Bunlardan biri kompüterə daxil edilən sürücülərin yoluxdurulması digər isə e-poçt üzərindən.
- Zərərverici Timer fuksiyası içərisində daimi olaraq kompüterə qoşulan diskləri gəzərək bunların arasında cihaz tipi 2 (GetDriveType) olanlara öz kopyasını FileCopy funksiyası ilə köçürür. Bunlardan əlavə olaraq istifadəçiyə məxsus faylların saxlanıldığı qovluqlara (My Documents və s.) da bir kopyasını yazır.
- 1-ci metod ilə bənzərlik göstərən bu metod ilə zərərverici bütün disklərdə olan faylları təhlil edir. Mətn məlumatları saxlanılan və içərisində e-poçt ilə bağlı hər hansı bir xarakter (@) olan faylları təhlil edir və buradan əldə etdiyi məlumatları AppData içərisində LOC.Mail.Bron.Tok qovluğuna [e-poçt adres].ini olaraq yazır.
Indicators of Compromise
htt[x]://www.geocities.com
84A82A6DB12CF5E12D4ECC8C2390C2856292FD04