2008-12-16:

Malware "kradnący" AppInit_DLLs

re:malware:windows:security:easy
W moje ręce dostał się pewien szkodnik, którego najciekawszym punktem był entrypoint użyty do uruchomienia szkodnika po reboocie systemu.

Takich entry pointów jak wiadomo pod Windowsem jest cała masa. Wymienię tylko kilka najbardziej oczywistych:
- wrzucenie skrótu / exeka do %USERPROFILE%\Menu Start\Autorun czy w przypadku Visty do %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\ lub C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup (odpalane w momencie zalogowania się danego lub dowolnego usera)
- wrzucenie ścieżki do exeka do HKCU lub HKLM \SOFTWARE\Microsoft\Windows\CurrentVersion\Run(Once) lub HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run (Vista x86-64) (odpalane w momencie zalogowania się danego lub dowolnego usera)
- wrzucenie ścieżki do exeka do HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\JAKIŚ.EXE\Debugger (odpalane zamiast JAKIŚ.EXE)
- wrzucenie ścieżki do DLLki do HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs (ładowane przez wszystko co używa user32.dll)
- wrzucenie DLLki o nazwie niesystemowej DLLki będącej normalnie w katalogu systemowym (np. ws2_32.dll) do katalogu aplikacji korzystającej z takowej DLLki (np. mIRCa) (ładowane w momencie uruchomienia mIRCa)
- wrzucenie ścieżki do exeka do HKLM lub HKCU \Software\Microsoft\Command Processor\AutoRun (odpalane w momencie uruchomienia konsoli cmd.exe)
- etc...

Zazwyczaj malware korzysta z któregoś z tych entry pointów, a antywirusy je oczywiście skanują. Natomiast przypadek o którym mowa, zamiast grzecznie skorzystać z AppInit_DLLs, zaczął działanie od zmiany (spatchowania) nazwy AppInit_DLLs w %SYSTEMROOT%\system32\user32.dll na xxxInit_DLLs (gdzie xxx były losowe 3 literki), po czym tworzył w rejestrze wartość o nazwie xxxInit_DLLs w tej samej lokacji co AppInit_DLLs jest normalnie, oczywiście ze ścieżką do swojej DLLki.

Pomysł, muszę przyznać, jest niezły. Sporo aplikacji (w tym winlogon) korzysta z user32.dll, a więc załadują DLLke szkodnika. Natomiast antywirusy w ciemno skanują AppInit_DLLs, bez sprawdzania czy w user32.dll nadal widnieje AppInit_DLLs, czy może już coś innego. Ktoś miał niezły pomysł.

Oczywiście słabym punktem całości jest "hałas" robiony przy operacji patchowania pliku systemowego - dość łatwo wykrywalne przez AV. No, ale to chyba dobrze ;>

OK, tyle ;>

Comments:

2008-12-17 11:39:13 = Vitro
{
Łoł. Faktycznie niezła myśl.
Dobra, a tego hałasu przy podmienianiu user32.dll to by się nie dało jakoś zagłuszyć :>?
}
2008-12-17 13:46:43 = Gynvael Coldwind
{
@Vitro
Hmmm zagłuszyć... ciekawy pomysł, trzeba się nad tym zastanowić ;>
Lepiej byłoby pomyśleć jak to wyciszyć w sumie. Hmmm, w sumie wyciszenie by można uzyskać jeśli by podmiana user32.dll była zrobiona w ramach aktualizacji, podczas restartu, lub w kernel mode. Hmm.. Też ciekawy problem ;>
}
2008-12-21 10:49:17 = ged_
{
@Vitro:
AV mozna obezwladnic czymkolwiek co przywraca SSDT. Wrzuc "SSDT restore" do googla.
}
2008-12-23 05:11:42 = Marcin
{
Przepraszam, że nie na temat, ale chyba masz problem z RSS-em. Już kilka czytników odmawia współpracy z powodu błędu: http://wklej.scxd.info/index.cgi?name=187&nos=no
Jeśli mógłbyś to poprawić będę wdzięczny.

Pozdrawiam,
Marcin
}
2008-12-24 14:46:56 = Gynvael Coldwind
{
@ged_
Hmm mówisz że AVki nadal operują na SSDT hookingu? W sumie pamiętam jak firmy AV się żaliły na Microsoft za patch guard w Vista x86-64 (no i też reakcje np. Alexa Ionescu (jeden z byłych programistów ReactOS, obecnie w MS siedzi), który w skrócie "wyśmiał" firmy AV za używanie hacków). Myślałem że zmienili metodę działania ;>

@Marcin
Dzięki za info ;> Rzucę okiem i poprawie ;>
}

Add a comment:

Nick:
URL (optional):
Math captcha: 7 ∗ 4 + 7 =