PDA

Просмотр полной версии : BackDoor.Scard (Backdoor.Win32.Small.bq)



Geser
04.11.2004, 10:32
Программа SCardSer.exe - размер 13824 байта, сжата UPX 1.20, распакованный размер 36824 байт. Статически импортирует только три библиотеки - KERNEL.DLL, ADVAPI32.DLL, PSAPI.DLL. По причине статического импорта PSAPI.DLL не эта программа не работает в WIN-98. Посредством PSAPI она перечисляет процессы и загруженные ими модули. Так что дальнейшее исследование проведено на Win-XP. При запуске SCardSer.exe ищет в папке Windows\System32 файлы comwsock.dll и comsock.dll.
Сам exe написан на Microsoft C, и судя по экспресс анализу его автор читал Рихтера (те главы, которые посвящены внедрению троянских DLL в чужой процесс). Короче говоря, после запуска этот SCardSer.exe висит в памяти, а в результате его работы у системного процесса LSASS.EXE появляется "лишняя" DLL - та самая comwsock.dll из system32.
Теперь насчет comwsock.dll - она имеет размер 4096, сжата UPX - распакованный размер составляет 20480 байт. Экспортирует она слудующие функции:
??0CProhide@@QAE@XZ
??4CProhide@@QAEAAV0@ABV0@@Z
?fnProhide@@YAHXZ
?nProhide@@3HA
start
В библиотеке множетсво "звучащих" констант типа "iexplore.exe", "outlook.exe" и т.п. - она в цикле делает операции, аналогичные SCardSer.exe - с интервалом в N миллисекунд он пробегает по списку процессов и пытается внедрить в процессы с известными именами dmsock.dll Интервал попытки внедрения dmsock.dll - порядка 5 мин, что легко наблюдать при помощи FileMon на зараженной системе.
dmsock.dll является троянской библиотекой, она действительно внедряется в адресное пространство разных процессов и работает из их контекста (отсюда и странные сообщения Firewall о том, что скажем Explorer.exe лезет куда-то ...).
В ходе работы эта DLL устанавливает связь с хостом 218.16.121.115 (service2.pcview3.com) по порту 3131, обмен имеет вид:
передача DLL: 001 0.3.11;002 20176;003 22596
ответ: 002 OK
Т.е. у них свой протокол обмена с квитированием.
Кроме того, была отмечена попытка передачи на 218.16.121.115 UDP пакетов по порту 137.

Короче говоря, это Backdoor, причем весьма изощренный и экзотический (с двухступенчатым инжектирование троянских DLL в адресные пространства запущенных процессов). Он может обмануть ряд Firewall из-за того, что обмен будет идти из контекста "правильной" задачи.
Лечение - уничтожить SCardSer.exe, dmsock.dll, comwsock.dll и файлик mst.tlb - последний имеет небольшой объем и содержит некие данные (судя по всему зашифрованные)
Тк же удалить из реестра ключь
HKLM\System\CurrentControlSet\Services
netlog c:\windows\system32\scardser.exe

На сегодня обнаруживается только ДрВеб и КАВ


Разбор трояна (ц) Зайцев Олег

06.11.2004, 22:44
Я эту проблему пофиксил еще год назад.Еще там в памяти болтался
dmstwe.exe
TECHNICAL FILE INFORMATION :
File Type Description :***Portable Executable (PE)

Possible Packer/Encryptor :***UPX
FILE CHARACTERISTICS :
******Relocation info stripped from file
******File is executable (i.e. no unresolved external references)
******COFF line numbers have been removed
******COFF symbol table entries for local symbols have been removed
******Machine based on 32-bit-word architecture
FILE HEADER :

***Machine: ***014Ch (i386 or later, and compatible)
***Number of Sections: ***0003h
***Time Date Stamp: ***4149785Dh -> 16/09/2004 14:26:21
***Symbols Pointer: ***00000000h
***Number Of Symbols: ***00000000h
***Size Of Optional Header: ***00E0h
***Flags: ***010Fh

OPTIONAL HEADER :
***Magic ***010Bh ( PE32 : normal 32-bit )
***Linker version ***6.00
***Size of code ***00001000h
***Size of initialized data ***00001000h
***Size of uninitialized data ***00004000h
***Address of Entry Point (RVA) ***000058C0h
***Base of code ***00005000h
***Base of data ***00006000h
***Image base ***00400000h
***Section Alignment ***00001000h
***File Alignment ***00000200h
***Required OS version ***4.00
***Image version ***0.00
***Subsystem version ***4.00
***Reserved1 ***0
***Size of image ***00007000h ( 28672 bytes)
***Size of headers ***00001000h
***Checksum ***00000000h
***Subsystem ***0002h (Image runs in the Windows GUI subsystem)
***DLL Characteristics ***0000h
***Size of Stack Reserve ***00100000h
***Size of Stack Commit ***00001000h
***Size of Heap Reserve ***00100000h
***Size of Heap Commit ***00001000h
***loader flags ***00000000h (obsolete)
***Number of Data Directory ***00000010h

DATA DIRECTORY (Virtual Address and Size)
***Export Directory ***rva: 00000000h ***size: 00000000h
***Import Directory ***rva: 00006000h ***size: 00000110h
***Resource Directory ***rva: 00000000h ***size: 00000000h
***Exception table ***rva: 00000000h ***size: 00000000h
***Security table ***rva: 00000000h ***size: 00000000h
***Base Relocation table ***rva: 00000000h ***size: 00000000h
***Debug Directory ***rva: 00000000h ***size: 00000000h
***Architecture Specific Data ***rva: 00000000h ***size: 00000000h
***Global Pointer ***rva: 00000000h ***size: 00000000h
***TLS Directory ***rva: 00000000h ***size: 00000000h
***Load config table ***rva: 00000000h ***size: 00000000h
***Bound Import table ***rva: 00000000h ***size: 00000000h
***Import Address Table ***rva: 00000000h ***size: 00000000h
***Delay import descriptor ***rva: 00000000h ***size: 00000000h
***COM descriptor ***rva: 00000000h ***size: 00000000h
***unused ***rva: 00000000h ***size: 00000000h

SECTION TABLE
01 UPX0
***VirtSize: ***00004000h VirtAddr: ***00001000h
***raw data offs: ***00000400h raw data size: ***00000000h
***relocation offs: ***00000000h relocations: ***00000000h
***line # offs: ***00000000h line #'s: ***00000000h
***characteristics: ***E0000080h
***UNINITIALIZED_DATA EXECUTE READ WRITE ALIGN_DEFAULT(16)
02 UPX1
***VirtSize: ***00001000h VirtAddr: ***00005000h
***raw data offs: ***00000400h raw data size: ***00000C00h
***relocation offs: ***00000000h relocations: ***00000000h
***line # offs: ***00000000h line #'s: ***00000000h
***characteristics: ***E0000040h
***INITIALIZED_DATA EXECUTE READ WRITE ALIGN_DEFAULT(16)
03 UPX2
***VirtSize: ***00001000h VirtAddr: ***00006000h
***raw data offs: ***00001000h raw data size: ***00000200h
***relocation offs: ***00000000h relocations: ***00000000h
***line # offs: ***00000000h line #'s: ***00000000h
***characteristics: ***C0000040h
***INITIALIZED_DATA READ WRITE ALIGN_DEFAULT(16)

IMPORTS TABLE:
KERNEL32.DLL
***Import Lookup Table RVA: ***00000000h*** (Unbound IAT)
***TimeDateStamp: ***00000000h
***ForwarderChain: ***00000000h
***DLL Name RVA: ***0000608Ch
***Import Address Table RVA: ***00006064h
***First thunk RVA: ***00006064h
***Ordn ***Name
***-----***-----
*** 0 ***LoadLibraryA
*** 0 ***GetProcAddress
*** 0 ***ExitProcess

ADVAPI32.dll
***Import Lookup Table RVA: ***00000000h*** (Unbound IAT)
***TimeDateStamp: ***00000000h
***ForwarderChain: ***00000000h
***DLL Name RVA: ***00006099h
***Import Address Table RVA: ***00006074h
***First thunk RVA: ***00006074h
***Ordn ***Name
***-----***-----
*** 0 ***OpenProcessToken

MSVCRT.dll
***Import Lookup Table RVA: ***00000000h*** (Unbound IAT)
***TimeDateStamp: ***00000000h
***ForwarderChain: ***00000000h
***DLL Name RVA: ***000060A6h
***Import Address Table RVA: ***0000607Ch
***First thunk RVA: ***0000607Ch
***Ordn ***Name
***-----***-----
*** 0 ***exit

PSAPI.DLL
***Import Lookup Table RVA: ***00000000h*** (Unbound IAT)
***TimeDateStamp: ***00000000h
***ForwarderChain: ***00000000h
***DLL Name RVA: ***000060B1h
***Import Address Table RVA: ***00006084h
***First thunk RVA: ***00006084h
***Ordn ***Name
***-----***-----
*** 0 ***EnumProcesses



DOS HEADER
Header Information :

***Signature :***5A4Dh
***Bytes on last page of file :***0090h
***Total Pages in File :***0003h
***Relocation Items :***0000h
***Size of header in paragraphs :***0004h
***Minimum Extra Paragraphs :***0000h
***Maximum Extra Paragraphs :***FFFFh
***Initial Stack Segment :***0000h
***Initial Stack Pointer :***00B8h
***Complemented Checksum :***0000h
***Initial Instruction Pointer :***0000h
***Initial Code Segment :***0000h
***Relocation Table Offset :***0040h
***Overlay Number :***0000h

Extra Header Information :
***Reserved WORD 0:***0000h
***Reserved WORD 1:***0000h
***Reserved WORD 2:***0000h
***Reserved WORD 3:***0000h
***OEM identifier :***0000h
***OEM information :***0000h
***Reserved WORD 0:***0000h
***Reserved WORD 1:***0000h
***Reserved WORD 2:***0000h
***Reserved WORD 3:***0000h
***Reserved WORD 4:***0000h
***Reserved WORD 5:***0000h
***Reserved WORD 6:***0000h
***Reserved WORD 7:***0000h
***Reserved WORD 8:***0000h
***Reserved WORD 9:***0000h
***New Header Address :***000000E0h
***Memory Needed :***1680 B ( 1 KB )
\\\\\\\\\\\\\\\\\\\\\\\\\
и ietcom.dll
TECHNICAL FILE INFORMATION :
File Type Description :***Portable Executable (PE)

Possible Packer/Encryptor :***UPX
FILE CHARACTERISTICS :
******File is executable (i.e. no unresolved external references)
******COFF line numbers have been removed
******COFF symbol table entries for local symbols have been removed
******Machine based on 32-bit-word architecture
******File is a DLL
FILE HEADER :

***Machine: ***014Ch (i386 or later, and compatible)
***Number of Sections: ***0003h
***Time Date Stamp: ***41497513h -> 16/09/2004 14:12:19
***Symbols Pointer: ***00000000h
***Number Of Symbols: ***00000000h
***Size Of Optional Header: ***00E0h
***Flags: ***210Eh

OPTIONAL HEADER :
***Magic ***010Bh ( PE32 : normal 32-bit )
***Linker version ***6.00
***Size of code ***00001000h
***Size of initialized data ***00001000h
***Size of uninitialized data ***00005000h
***Address of Entry Point (RVA) ***00006400h
***Base of code ***00006000h
***Base of data ***00007000h
***Image base ***10000000h
***Section Alignment ***00001000h
***File Alignment ***00000200h
***Required OS version ***4.00
***Image version ***0.00
***Subsystem version ***4.00
***Reserved1 ***0
***Size of image ***00008000h ( 32768 bytes)
***Size of headers ***00001000h
***Checksum ***00000000h
***Subsystem ***0002h (Image runs in the Windows GUI subsystem)
***DLL Characteristics ***0000h
***Size of Stack Reserve ***00100000h
***Size of Stack Commit ***00001000h
***Size of Heap Reserve ***00100000h
***Size of Heap Commit ***00001000h
***loader flags ***00000000h (obsolete)
***Number of Data Directory ***00000010h

DATA DIRECTORY (Virtual Address and Size)
***Export Directory ***rva: 000070F0h ***size: 000000B4h
***Import Directory ***rva: 00007000h ***size: 000000F0h
***Resource Directory ***rva: 00000000h ***size: 00000000h
***Exception table ***rva: 00000000h ***size: 00000000h
***Security table ***rva: 00000000h ***size: 00000000h
***Base Relocation table ***rva: 000071A4h ***size: 0000000Ch
***Debug Directory ***rva: 00000000h ***size: 00000000h
***Architecture Specific Data ***rva: 00000000h ***size: 00000000h
***Global Pointer ***rva: 00000000h ***size: 00000000h
***TLS Directory ***rva: 00000000h ***size: 00000000h
***Load config table ***rva: 00000000h ***size: 00000000h
***Bound Import table ***rva: 00000000h ***size: 00000000h
***Import Address Table ***rva: 00000000h ***size: 00000000h
***Delay import descriptor ***rva: 00000000h ***size: 00000000h
***COM descriptor ***rva: 00000000h ***size: 00000000h
***unused ***rva: 00000000h ***size: 00000000h

SECTION TABLE
01 UPX0
***VirtSize: ***00005000h VirtAddr: ***00001000h
***raw data offs: ***00000400h raw data size: ***00000000h
***relocation offs: ***00000000h relocations: ***00000000h
***line # offs: ***00000000h line #'s: ***00000000h
***characteristics: ***E0000080h
***UNINITIALIZED_DATA EXECUTE READ WRITE ALIGN_DEFAULT(16)
02 UPX1
***VirtSize: ***00001000h VirtAddr: ***00006000h
***raw data offs: ***00000400h raw data size: ***00000600h
***relocation offs: ***00000000h relocations: ***00000000h
***line # offs: ***00000000h line #'s: ***00000000h
***characteristics: ***E0000040h
***INITIALIZED_DATA EXECUTE READ WRITE ALIGN_DEFAULT(16)
03 UPX2
***VirtSize: ***00001000h VirtAddr: ***00007000h
***raw data offs: ***00000A00h raw data size: ***00000200h
***relocation offs: ***00000000h relocations: ***00000000h
***line # offs: ***00000000h line #'s: ***00000000h
***characteristics: ***C0000040h
***INITIALIZED_DATA READ WRITE ALIGN_DEFAULT(16)

IMPORTS TABLE:
KERNEL32.DLL
***Import Lookup Table RVA: ***00000000h*** (Unbound IAT)
***TimeDateStamp: ***00000000h
***ForwarderChain: ***00000000h
***DLL Name RVA: ***00007088h
***Import Address Table RVA: ***00007064h
***First thunk RVA: ***00007064h
***Ordn ***Name
***-----***-----
*** 0 ***LoadLibraryA
*** 0 ***GetProcAddress

MSVCRT.dll
***Import Lookup Table RVA: ***00000000h*** (Unbound IAT)
***TimeDateStamp: ***00000000h
***ForwarderChain: ***00000000h
***DLL Name RVA: ***00007095h
***Import Address Table RVA: ***00007070h
***First thunk RVA: ***00007070h
***Ordn ***Name
***-----***-----
*** 0 ***free

urlmon.dll
***Import Lookup Table RVA: ***00000000h*** (Unbound IAT)
***TimeDateStamp: ***00000000h
***ForwarderChain: ***00000000h
***DLL Name RVA: ***000070A0h
***Import Address Table RVA: ***00007078h
***First thunk RVA: ***00007078h
***Ordn ***Name
***-----***-----
*** 0 ***URLDownloadToFileA

WS2_32.dll
***Import Lookup Table RVA: ***00000000h*** (Unbound IAT)
***TimeDateStamp: ***00000000h
***ForwarderChain: ***00000000h
***DLL Name RVA: ***000070ABh
***Import Address Table RVA: ***00007080h
***First thunk RVA: ***00007080h
***Ordn ***Name
***-----***-----
*** 115 ***


EXPORTS TABLE:
***Name: ***dfile.dll
***Characteristics: ***00000000h
***TimeDateStamp: ***41497513h -> 16/09/2004 14:12:19
***Version:***0.00
***Ordinal base: ***00000001h
***# of functions: ***00000005h ( 5 )
***# of Names: ***00000005h

***Entry Pt ***Ordn Name
***00001017h *** 1 public: __thiscall CDfile::CDfile(void)
***00001000h *** 2 public: class CDfile & __thiscall CDfile::operator=(class CDfile const &)
***00001013h *** 3 int __cdecl fnDfile(void)
***000031D0h *** 4 int nDfile
***0000101Ah *** 5 start


DOS HEADER
Header Information :

***Signature :***5A4Dh
***Bytes on last page of file :***0090h
***Total Pages in File :***0003h
***Relocation Items :***0000h
***Size of header in paragraphs :***0004h
***Minimum Extra Paragraphs :***0000h
***Maximum Extra Paragraphs :***FFFFh
***Initial Stack Segment :***0000h
***Initial Stack Pointer :***00B8h
***Complemented Checksum :***0000h
***Initial Instruction Pointer :***0000h
***Initial Code Segment :***0000h
***Relocation Table Offset :***0040h
***Overlay Number :***0000h

Extra Header Information :
***Reserved WORD 0:***0000h
***Reserved WORD 1:***0000h
***Reserved WORD 2:***0000h
***Reserved WORD 3:***0000h
***OEM identifier :***0000h
***OEM information :***0000h
***Reserved WORD 0:***0000h
***Reserved WORD 1:***0000h
***Reserved WORD 2:***0000h
***Reserved WORD 3:***0000h
***Reserved WORD 4:***0000h
***Reserved WORD 5:***0000h
***Reserved WORD 6:***0000h
***Reserved WORD 7:***0000h
***Reserved WORD 8:***0000h
***Reserved WORD 9:***0000h
***New Header Address :***000000D0h
***Memory Needed :***1680 B ( 1 KB )

Geser
06.11.2004, 22:59
Я эту проблему пофиксил еще год назад.Еще там в памяти болтался
dmstwe.exe


Файлик остался? Если да, то кинь мне на [email protected] в архиве с паролем, пароль virus

Зайцев Олег
10.11.2004, 12:30
Файлик остался? Если да, то кинь мне на [email protected] в архиве с паролем, пароль virus

dmstwe.exe, сжат UPX, распакованный размер 16384 байт, написан на Microsoft Visual C, при старте проверяет наличие в System32 файла ietcom.dll (если его нет, то не стартует). Импортирует PSAPI, при его помощи следит за запущенными процессами. Содержит имена типовых процессов W2K/XP, которые работают с сетью - msmsgs.exe, msnmsgr.exe, outlook.exe, iexplore.exe, msimn.exe, qq.exe.
Основной рабочий цикл содержит вызов некоей функции + спячку на заданный интервал времени. Функция эта открывает один из найденных процессов (имя которых совпадает с перечисленными выше) и именяет флаги привилегий, после чего при помощи WriteProcessMemory внедряет в процесс троянскую DLL ietcom.dll (короче, все по книжке Рихтера как по нотам).
Эта DLL ищет в папке system32 программу tcdex.exe и netercfg.tlb, по анализу внутренностей может загружать файлы из Инет ... короче говоря, по структуре эти файлы очень похожи на исследованные мной ранее SCardSer.exe и comwsock.dll, судя по дизассемблеру чувствуется рука одного автора

Geser
11.11.2004, 22:05
ЛК добавили как Trojan-Downloader.Win32.Small.aao
ДрВеб как BackDoor.Scard