Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Haittaohjelman reversaus ja poisto

etsubu [11.06.2012 23:22:09]

#

Olen tässä jonkin aikaa sitten aloittanut haittaohjelmien reversaamisen. Tarkoituksenani on ensin kerätä ohjelman eri toimintoja ja rekisterimuutoksia ja lopuksi kirjoittaa koodi joka poistaa kyseisen haittaohjelman.

Projektia suoritan netistä eristetyllä koneella jossa on Ubuntu ja Oracle VM VirtualBox:in alle asennettu Windows XP SP2.

Nyt viimeisin haasteeni ProRat osoittautui hieman hankalaksi. Sain selville rekisteri muutokset ja tiedostojen kopioinnit. Kuitenkin kyseinen haittaohjelma ei näy process explorer:issa eikä muissa ohjelmissa, sekä jos sen koittaa sammuttaa millä tahansa ohjelmalla antamalla tiedoston nimen kaikki ohjelmat herjaavat, että prosessia ei löydy. Rekisterin käynnistys listoilta poistaminenkaan ei auta asiaa, sillä se kirjoittaa itsensä sinne jatkuvasti uudelleen.

Elikkäs osaisiko joku kokeneempi putkalainen neuvoa miten tuollaisen haittaohjelman voi poistaa omalla ohjelmalla (Ilman vikasietotilaa). Voiko sen kuitenkin saada tapettua sen ollessa päällä? Pitääkö estää rekisterin muokkaaminen hook:in avulla ja käynnistää kone uudelleen?

Mod. korjasi kappalejaon!

Deffi [19.06.2012 12:06:34]

#

Pelkällä Processor Explorerilla tutkiminen on aika pintaliitotouhua. Kuinka selvitit rekisterimuutokset ja mihin haittaohjelma tallentuu? Jos ohjelma ei näy muissa ohjelmissa, niin miten yrität sammuttaa sitä?

Prosessin "piilottamiseen" on pari yleistä tapaa. Dokumentoitu ja mielestäni paras tapa on injektoida koodi toiseen prosessiin ja suorittaa koodi siellä, jolloin prosessilistauksessa ei näy mitään hämärää. Yleensä koodin injektointiin käytetään DLL-injektiota. Voit eri ohjelmilla katsoa mitä DLL:iä prosessit ovat ladanneet ja etsiä epäilyttäviä tiedostoja. Jos luulet löytäneesi oikean, niin voit tappaa isäntäprosessin ja sen jälkeen yrittää poistaa haittaohjelman normaalisti.

Yhden hämärän DLL:n löytäminen voi kuitenkin olla vaikeaa, ja lisäksi DLL:n piilottaminen prosessista on varsin helppoa (unlinkkaus PEB->LoaderData:n listoista). Tämä on aika hakuammuntaa, ja siksi olisi hyvä osata käyttää debuggeria, niin ei tarvitsisi arvailla. Debuggerilla ja disassemblerilla voit lähteä selvittämään koodin injektointia APIen CreateRemoteThread, SetThreadContext, OpenProcess ja WriteProcessMemory perusteella.

Toisaalta taas käytät XP:tä, joten jonkin sortin rootkit-ratkaisu on mahdollinen. Jos ProRat kirjoittaa jotakin rekisteriin avaimen HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ alle, niin se todennäköisesti pyrkii lataamaan rootkit-ajurin. Kernelissä prosessin terminoinnin esto onnistuu hookkaamalla NtTerminateProcess, ja prosessin piilottaminen unlinkkaamalla prosessi EPROCESS-listasta tai hookkaamalla ZwQueryInformationProcess. Saman APIn voi hookata user-modessa ntdll.dll:stä, jolloin pystyy piiloutumaan "yhden prosessin sisällä".

etsubu [16.07.2012 14:19:13]

#

Aluksi pahoittelut myöhäisestä vastauksesta oli jäänyt huomaamatta.

Deffi kirjoitti:

Kuinka selvitit rekisterimuutokset ja mihin haittaohjelma tallentuu?

Käytin Regshot:tia selvittämään ajon jälkeiset muutokset rekisteriin ja kovolle. Varmistin vielä Process Monitor:illa, että muutokset oli tehnyt kyseinen ohjelma.
Koitin kaivaa näitä muistiinpanoja esiin, mutta voin tässä kun ehdin niin virittää sen virtuuali koneen uusiksi ja ottaa tarkempaa tietoa. Tässä nyt kuitenkin joitan tietoja mitä sain löydettyä.

Lisätyt tiedostot:

C:\WINDOWS\Prefetch\SERVER.EXE-1408A456.pf
C:\WINDOWS\system\sservice.exe
C:\WINDOWS\system32\fservice.exe
C:\WINDOWS\system32\winkey.dll
C:\WINDOWS\services.exe

Lisättyjä rekisteri arvoja ja avaimia:

HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components\{5Y99AE78-58TT-11dW-BE53-Y67078979Y}\StubPath: "C:\WINDOWS\system\sservice.exe"
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer\Run\DirectX For Microsoft® Windows: "C:\WINDOWS\system32\fservice.exe"
HKU\S-1-5-21-1214440339-1993962763-1343024091-1004\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{75048700-EF1F-11D0-9888-006097DEACF9}\Count\HRZR_EHACNGU:P:\Qbphzragf naq Frggvatf\Rgfhoh\Qrfxgbc\Znyjnerf\CebEng\CebEng\freire.rkr: 01 00 00 00 06 00 00 00 E0 0C D7 68 22 14 CD 01
HKU\S-1-5-21-1214440339-1993962763-1343024091-1004\Software\Microsoft\Windows NT Script Host\Microsoft DxDiag\WinSettings\Bulas: "1"
HKU\S-1-5-21-1214440339-1993962763-1343024091-1004\Software\Microsoft\Windows NT Script Host\Microsoft DxDiag\WinSettings\FW_KILL: "0"
HKU\S-1-5-21-1214440339-1993962763-1343024091-1004\Software\Microsoft\Windows NT Script Host\Microsoft DxDiag\WinSettings\XP_FW_Disable: "0"
HKU\S-1-5-21-1214440339-1993962763-1343024091-1004\Software\Microsoft\Windows NT Script Host\Microsoft DxDiag\WinSettings\XP_SYS_Recovery: "0"
HKU\S-1-5-21-1214440339-1993962763-1343024091-1004\Software\Microsoft\Windows NT Script Host\Microsoft DxDiag\WinSettings\ICQ_UIN: ""
HKU\S-1-5-21-1214440339-1993962763-1343024091-1004\Software\Microsoft\Windows NT Script Host\Microsoft DxDiag\WinSettings\ICQ_UIN2: ""
HKU\S-1-5-21-1214440339-1993962763-1343024091-1004\Software\Microsoft\Windows NT Script Host\Microsoft DxDiag\WinSettings\Kurban_Ismi: "whbuhl"
HKU\S-1-5-21-1214440339-1993962763-1343024091-1004\Software\Microsoft\Windows NT Script Host\Microsoft DxDiag\WinSettings\Mail: ""
HKU\S-1-5-21-1214440339-1993962763-1343024091-1004\Software\Microsoft\Windows NT Script Host\Microsoft DxDiag\WinSettings\Online_List: ""
HKU\S-1-5-21-1214440339-1993962763-1343024091-1004\Software\Microsoft\Windows NT Script Host\Microsoft DxDiag\WinSettings\Port: "4001"
HKU\S-1-5-21-1214440339-1993962763-1343024091-1004\Software\Microsoft\Windows NT Script Host\Microsoft DxDiag\WinSettings\Sifre: "032547"
HKU\S-1-5-21-1214440339-1993962763-1343024091-1004\Software\Microsoft\Windows NT Script Host\Microsoft DxDiag\WinSettings\Hata: ""
HKU\S-1-5-21-1214440339-1993962763-1343024091-1004\Software\Microsoft\Windows NT Script Host\Microsoft DxDiag\WinSettings\KSil: "0"
HKU\S-1-5-21-1214440339-1993962763-1343024091-1004\Software\Microsoft\Windows NT Script Host\Microsoft DxDiag\WinSettings\LanNotifie: ""
HKU\S-1-5-21-1214440339-1993962763-1343024091-1004\Software\Microsoft\Windows NT Script Host\Microsoft DxDiag\WinSettings\Tport: "0"
HKU\S-1-5-21-1214440339-1993962763-1343024091-1004\Software\Microsoft\Windows NT Script Host\Microsoft DxDiag\WinSettings\ServerVersionInt: "19"

HKLM\SOFTWARE\Microsoft\Active Setup\Installed Components\{5Y99AE78-58TT-11dW-BE53-Y67078979Y}
HKU\S-1-5-21-1214440339-1993962763-1343024091-1004\Software\Microsoft\Windows NT Script Host\Microsoft DxDiag
HKU\S-1-5-21-1214440339-1993962763-1343024091-1004\Software\Microsoft\Windows NT Script Host\Microsoft DxDiag\WinSettings

Ja muokattuja arvoja:

HKLM\SOFTWARE\Microsoft\Cryptography\RNG\Seed: 90 80 EF 7E 89 E9 26 2D BE 52 09 F1 A0 D7 A5 E7 D6 0E 64 FA D9 46 D3 C8 23 A7 FA 3E 33 B4 89 B3 AF 5B 95 D5 9E 97 40 61 09 39 DC D5 2A E9 20 43 F5 2B E8 9E 05 50 2D CC 51 F1 BE A9 93 E5 24 2C B9 70 AE AB 97 5D 75 B8 37 48 03 E0 07 3A C6 9F
HKLM\SOFTWARE\Microsoft\Cryptography\RNG\Seed: 34 78 1F 2D 54 4F 75 4E 43 69 80 AE 83 32 EF 04 40 97 11 0D 25 97 23 79 AF 9A 68 2E 13 AF 04 E5 76 53 FF 15 8B 26 B7 1C EA 62 E6 20 18 B7 02 ED 72 DB 53 F2 C3 CD 80 9D C9 4E 89 71 6A 4C B0 E3 72 17 43 45 9B C4 7F 0B 8C 1A 49 25 3E 5A BC 1B
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell: "Explorer.exe"
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell: "Explorer.exe C:\WINDOWS\system32\fservice.exe"
HKU\S-1-5-21-1214440339-1993962763-1343024091-1004\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{75048700-EF1F-11D0-9888-006097DEACF9}\Count\HRZR_EHACNGU: 01 00 00 00 14 00 00 00 A0 DE 84 42 22 14 CD 01
HKU\S-1-5-21-1214440339-1993962763-1343024091-1004\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{75048700-EF1F-11D0-9888-006097DEACF9}\Count\HRZR_EHACNGU: 01 00 00 00 15 00 00 00 E0 0C D7 68 22 14 CD 01

Tuon yhden dll tiedoston (C:\WINDOWS\system32\winkey.dll) se näyttää lisävän ja se voisi olla se mitä se käyttää hook:iin.

Itse en ole aikaisemmin törmännyt tämän tyylisiin: HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer\Run\DirectX For Microsoft® Windows: "C:\WINDOWS\system32\fservice.exe"
Myöskään itseään se ei lisää tyypillisten Run avainten alle. Joten yrittääkö se yllä olevalla avaimella saada itseään ajettua Explorer:in yhteydessä? Myös jos muistan oikein se kirjoitti tuota arvoa jatkuvasti.

Edit.
Lisättyjä tiedostoja ei pystynyt lukemaan.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta