Forensicscontest-puzzle8

From aldeid
Jump to navigation Jump to search

Description

This post is the answer to the forensics contest, puzzle #8.

Joe’s WAP is beaconing. Based on the contents of the packet capture, what are the SSID and BSSID of his access point?

  • BSSID: 00:23:69:61:00:d0
  • SSID: Ment0rNet
$ tshark -n -R wlan -r evidence08.pcap |grep SSID
  1   0.000000 00:23:69:61:00:d0 -> ff:ff:ff:ff:ff:ff 802.11 105 Beacon frame,
SN=3583, FN=0, Flags=........, BI=100, SSID=Ment0rNet
(...TRUNCATED...)

How long is the packet capture, from beginning to end (in SECONDS, please round to the nearest full second)?

Using nsm-console, or just the capinfos utility, we can easily answer this question:

$ capinfos -u evidence08.pcap
File name:               evidence08.pcap
Capture duration:    414 seconds

Beware using the evidence08.pcap file and not the evidence08-dec.pcap (generated by airdecap-ng) since this latest provides us with different results:

$ capinfos -u evidence08-dec.pcap
File name:               evidence08-dec.pcap
Capture duration:    405 seconds

The capture length is 414 seconds.

How many WEP-encrypted data frames are there total in the packet capture?

Here is a useful online resource to write the filters: http://www.wireshark.org/docs/dfref/w/wlan.html

According to the IEEE 802.11 standard (page 62), to filter the data frames, the values of the frame control (FC) are:

  • type: 10
  • subtype: 0000

By combining the type and the subtype (wlan.fc.type_subtype), the binary value of 100000, converted in hexadecimal is: 0x20.

In addition, we also filter frames that are encrypted using WEP: wlan.fc.protected==1

At last, we filter on the appropriate BSSID: wlan.bssid == 00:23:69:61:00:d0

Combining the filters, here is the syntax:

$ tshark -r evidence08.pcap -R 'wlan.fc.type_subtype==0x20 && wlan.fc.protected==1 
&& wlan.bssid==00:23:69:61:00:d0' | wc -l
59274

There are 59274 WEP-encrypted data frames in our capture file.

Notice that using the statistics, tshark also provides the solution:

$ tshark -r evidence08.pcap -z io,phs
[...TRUNCATED...]
===================================================================
Protocol Hierarchy Statistics
Filter: 

wlan                                     frames:133068 bytes:6556285
  wlan_mgt                           frames:15110 bytes:433527
  data                                   frames:59274 bytes:5526728
===================================================================

How many *unique* WEP initialization vectors (IVs) are there TOTAL in the packet capture relating to Joe’s access point?

We first need to filter on the appropriate Access Point (AP):

wlan.bssid==00:23:69:61:00:d0

We also want to only keep frames that contain IVs:

wlan.wep.iv

To be able to count the number of frames, we must output the IVs by specifying it as a field:

-T fields -e wlan.wep.iv

The command is:

$ tshark -r evidence08.pcap -R 'wlan.bssid==00:23:69:61:00:d0 && wlan.wep.iv' 
-T fields -e wlan.wep.iv| sort -u |wc -l
  29719

Joe's AP is generating 29719 unique WEP IVs during the capture.

What was the MAC address of the station executing the Layer 2 attacks?

We first crack the key with aircrack-ng:

$ aircrack-ng evidence08.pcap

We can then use airdecap-ng to generate an unencrypted capture file (evidence08-dec.pcap):

$ airdecap -w D0E59EB904 evidence08.pcap

The statistics are:

$ tshark -r evidence08-dec.pcap -z io,phs
[...TRUNCATED...]
===================================================================
Protocol Hierarchy Statistics
Filter: 

eth                                      frames:56692 bytes:3690010
  ip                                     frames:2868 bytes:1427722
    udp                                  frames:85 bytes:29395
      http                               frames:59 bytes:21788
      bootp                              frames:21 bytes:7182
      dns                                frames:5 bytes:425
    tcp                                  frames:2783 bytes:1398327
      http                               frames:904 bytes:1134807
        image-gif                        frames:14 bytes:10204
          tcp.segments                   frames:8 bytes:6592
          malformed                      frames:1 bytes:1514
        data-text-lines                  frames:3 bytes:3720
  ipv6                                   frames:47 bytes:3654
    icmpv6                               frames:47 bytes:3654
  arp                                    frames:53777 bytes:2258634
===================================================================

We immediately notice that the majority of the traffic concerns the ARP protocol. By writting the appropriate filter, we can find what mac address is responsible of the traffic:

$ tshark -r evidence08-dec.pcap -R arp -T fields -e eth.src -e eth.dst | sort | uniq -c
12664 00:11:22:33:44:55	00:23:69:61:00:ce
   2 00:11:22:33:44:55	ff:ff:ff:ff:ff:ff
   1 00:23:69:61:00:ce	00:11:22:33:44:55
   1 00:23:69:61:00:ce	de:ad:be:ef:13:37
   3 00:23:69:61:00:ce	ff:ff:ff:ff:ff:ff
41104 1c:4b:d6:69:cd:07	ff:ff:ff:ff:ff:ff
   2 de:ad:be:ef:13:37	ff:ff:ff:ff:ff:ff

The traffic looks like:

$ tshark -r evidence08-dec.pcap -R 'eth.src==1c:4b:d6:69:cd:07 && arp' | head -n 20
694 174.581146 1c:4b:d6:69:cd:07 -> ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.100?  Tell 192.168.1.1
695 174.979009 1c:4b:d6:69:cd:07 -> ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.100?  Tell 192.168.1.1
696 174.980033 1c:4b:d6:69:cd:07 -> ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.100?  Tell 192.168.1.1
697 174.983103 1c:4b:d6:69:cd:07 -> ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.100?  Tell 192.168.1.1
698 174.987200 1c:4b:d6:69:cd:07 -> ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.100?  Tell 192.168.1.1
699 174.988185 1c:4b:d6:69:cd:07 -> ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.100?  Tell 192.168.1.1
700 174.989207 1c:4b:d6:69:cd:07 -> ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.100?  Tell 192.168.1.1
701 174.990785 1c:4b:d6:69:cd:07 -> ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.100?  Tell 192.168.1.1
702 174.991810 1c:4b:d6:69:cd:07 -> ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.100?  Tell 192.168.1.1
703 174.992256 1c:4b:d6:69:cd:07 -> ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.100?  Tell 192.168.1.1
704 174.993305 1c:4b:d6:69:cd:07 -> ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.100?  Tell 192.168.1.1
705 174.994879 1c:4b:d6:69:cd:07 -> ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.100?  Tell 192.168.1.1
706 174.995391 1c:4b:d6:69:cd:07 -> ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.100?  Tell 192.168.1.1
707 174.996375 1c:4b:d6:69:cd:07 -> ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.100?  Tell 192.168.1.1
708 174.997439 1c:4b:d6:69:cd:07 -> ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.100?  Tell 192.168.1.1
709 174.998425 1c:4b:d6:69:cd:07 -> ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.100?  Tell 192.168.1.1
710 174.999487 1c:4b:d6:69:cd:07 -> ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.100?  Tell 192.168.1.1
711 175.000472 1c:4b:d6:69:cd:07 -> ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.100?  Tell 192.168.1.1
712 175.001537 1c:4b:d6:69:cd:07 -> ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.100?  Tell 192.168.1.1
713 175.003544 1c:4b:d6:69:cd:07 -> ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.1.100?  Tell 192.168.1.1

We can conclude that the mac address of the station making the layer 2 attacks is 1c:4b:d6:69:cd:07.

How many *unique* IVs were generated (relating to Joe’s access point)

By the attacker station?

We first need to filter on the appropriate AP:

wlan.bssid==00:23:69:61:00:d0

We also need to filter the frames that come from the attacker:

wlan.sa==1c:4b:d6:69:cd:07

To know the number of IVs generated by the attacker station:

$ tshark -r evidence08.pcap -R 'wlan.bssid==00:23:69:61:00:d0
 && wlan.sa==1c:4b:d6:69:cd:07
 && wlan.wep.iv' -T fields -e wlan.wep.iv| sort -u | wc -l
  14133

The answer is 14133.

By all *other* stations combined?

$ tshark -r evidence08.pcap -R 'wlan.bssid==00:23:69:61:00:d0
 && wlan.sa!=1c:4b:d6:69:cd:07 && wlan.wep.iv' 
 -T fields -e wlan.wep.iv| sort -u | wc -l
  15587

What was the WEP key of Joe’s WAP?

The aircrack-ng suite helps us decrypting the key:

$ aicrack-ng evidence08.pcap

                                                                                  Aircrack-ng 1.1

                                                                  [00:00:00] Tested 587 keys (got 26805 IVs)

  KB    depth   byte(vote)
   0    3/  4   D0(33536) BC(33024) 27(33024) 1F(33024) 7B(31744) 2F(31744) FF(31488) CA(30976) 96(30720) C9(30720) 69(30720) 6F(30720) DF(30464) E8(30464) 
   1    0/  1   E5(38656) 82(33024) 0C(32256) 3C(32000) EB(31744) 42(31488) 8B(31232) 3D(31232) 8C(31232) 31(30976) 32(30976) 6A(30976) 07(30976) 58(30976) 
   2    0/  5   9E(34048) 27(33792) 7A(32768) E9(32512) 8B(31744) C3(31744) D0(31488) 7B(31488) 2B(31488) 36(31488) BF(31232) E0(31232) 3D(30976) 4A(30720) 
   3    0/  3   B9(35328) 57(35072) B1(34048) 7C(33024) 00(32768) 06(32512) CF(32256) 9C(31744) 09(31488) 3F(31232) 7F(31232) 47(31232) D6(31232) 2B(31232) 
   4    8/ 10   A9(31488) B9(31232) 10(31232) 95(30976) A5(30976) 7A(30976) 08(30720) E1(30720) C8(30720) 8B(30720) B2(30464) B3(30464) 87(30464) 52(30464) 

                        KEY FOUND! [ D0:E5:9E:B9:04 ] 

Decrypted correctly: 100% The key is D0E59EB904.

What were the administrative username and password of the targeted wireless access point?

List of tshark filters for HTTP: http://www.wireshark.org/docs/dfref/h/http.html

$ tshark -r evidence08-dec.pcap -R 'http.request && http.authbasic' -T fields -e http.authbasic | uniq
admin:admin

Tshark is really helpful once more. We filter the HTTP requests (http.request) that contain a Base64 authentication (http.authbasic) and we display the content of the Base64 (-T fields -e http.authbasic). Notice that tshark automatically decodes the Base64:

  • username: admin
  • password: admin

With such credentials, no way that anyone accessing the LAN won't be able to administer the router ;-)

What was the WAP administrative passphrase changed to?

By filtering the HTTP requests (-R http.request) and displaying the details (-V) of the packets, it is easy to guess that the new passphrase is sent as a parameter in the URL (form GET method):

$ tshark -r evidence08-dec.pcap -V -R 'http.request' | grep -i pass
   SecurityMode=3&CipherType=1&PassPhrase=hahp0wnedJ00&GkuInterval=3600&layout=en

Appendix: Frame Control Type and SubType