Pcap Inspection

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ

Tip

PCAP์™€ PCAPNG์— ๋Œ€ํ•œ ์ฃผ์˜ ์‚ฌํ•ญ: PCAP ํŒŒ์ผ ํ˜•์‹์—๋Š” ๋‘ ๊ฐ€์ง€ ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค; PCAPNG๋Š” ๋” ์ตœ์‹ ์ด๋ฉฐ ๋ชจ๋“  ๋„๊ตฌ์—์„œ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋„๊ตฌ์—์„œ ์ž‘์—…ํ•˜๊ธฐ ์œ„ํ•ด Wireshark ๋˜๋Š” ๋‹ค๋ฅธ ํ˜ธํ™˜ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PCAPNG์—์„œ PCAP๋กœ ํŒŒ์ผ์„ ๋ณ€ํ™˜ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

pcaps๋ฅผ ์œ„ํ•œ ์˜จ๋ผ์ธ ๋„๊ตฌ

  • pcap์˜ ํ—ค๋”๊ฐ€ ์†์ƒ๋œ ๊ฒฝ์šฐ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜์ •ํ•ด ๋ณด์‹ญ์‹œ์˜ค: http://f00l.de/hacking/pcapfix.php
  • PacketTotal์—์„œ pcap ๋‚ด๋ถ€์˜ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•˜๊ณ  ์•…์„ฑ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฒ€์ƒ‰ํ•˜์‹ญ์‹œ์˜ค.
  • www.virustotal.com ๋ฐ www.hybrid-analysis.com์—์„œ ์•…์˜์ ์ธ ํ™œ๋™์„ ๊ฒ€์ƒ‰ํ•˜์‹ญ์‹œ์˜ค.
  • https://apackets.com/์—์„œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ „์ฒด pcap ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

์ •๋ณด ์ถ”์ถœ

๋‹ค์Œ ๋„๊ตฌ๋Š” ํ†ต๊ณ„, ํŒŒ์ผ ๋“ฑ์„ ์ถ”์ถœํ•˜๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

Wireshark

Tip

PCAP์„ ๋ถ„์„ํ•˜๋ ค๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ Wireshark๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์—์„œ Wireshark ํŒ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

Wireshark tricks

https://apackets.com/

๋ธŒ๋ผ์šฐ์ €์—์„œ pcap ๋ถ„์„.

Xplico Framework

Xplico _(๋ฆฌ๋ˆ…์Šค ์ „์šฉ)_๋Š” pcap์„ ๋ถ„์„ํ•˜๊ณ  ๊ทธ๋กœ๋ถ€ํ„ฐ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, pcap ํŒŒ์ผ์—์„œ Xplico๋Š” ๊ฐ ์ด๋ฉ”์ผ(POP, IMAP ๋ฐ SMTP ํ”„๋กœํ† ์ฝœ), ๋ชจ๋“  HTTP ์ฝ˜ํ…์ธ , ๊ฐ VoIP ํ†ตํ™”(SIP), FTP, TFTP ๋“ฑ์„ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜

sudo bash -c 'echo "deb http://repo.xplico.org/ $(lsb_release -s -c) main" /etc/apt/sources.list'
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 791C25CE
sudo apt-get update
sudo apt-get install xplico

์‹คํ–‰

/etc/init.d/apache2 restart
/etc/init.d/xplico start

_127.0.0.1:9876_์— xplico:xplico ์ž๊ฒฉ ์ฆ๋ช…์œผ๋กœ ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ƒˆ ์‚ฌ๋ก€๋ฅผ ๋งŒ๋“ค๊ณ , ์‚ฌ๋ก€ ๋‚ด์—์„œ ์ƒˆ ์„ธ์…˜์„ ์ƒ์„ฑํ•œ ํ›„ pcap ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

NetworkMiner

Xplico์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ pcap์—์„œ ๊ฐ์ฒด๋ฅผ ๋ถ„์„ํ•˜๊ณ  ์ถ”์ถœํ•˜๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋ฌด๋ฃŒ ๋ฒ„์ „์ด ์žˆ์œผ๋ฉฐ, ์—ฌ๊ธฐ์„œ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Windows์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
์ด ๋„๊ตฌ๋Š” ํŒจํ‚ท์—์„œ ๋ถ„์„๋œ ๋‹ค๋ฅธ ์ •๋ณด๋ฅผ ์–ป๋Š” ๋ฐ๋„ ์œ ์šฉํ•˜์—ฌ ๋” ๋น ๋ฅด๊ฒŒ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

NetWitness Investigator

์—ฌ๊ธฐ์„œ NetWitness Investigator๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (Windows์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค).
์ด๊ฒƒ์€ ํŒจํ‚ท์„ ๋ถ„์„ํ•˜๊ณ  ์ •๋ณด๋ฅผ ์œ ์šฉํ•œ ๋ฐฉ์‹์œผ๋กœ ์ •๋ฆฌํ•˜์—ฌ ๋‚ด๋ถ€์—์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋˜ ๋‹ค๋ฅธ ์œ ์šฉํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

BruteShark

  • ์‚ฌ์šฉ์ž ์ด๋ฆ„ ๋ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ถ”์ถœ ๋ฐ ์ธ์ฝ”๋”ฉ (HTTP, FTP, Telnet, IMAP, SMTPโ€ฆ)
  • ์ธ์ฆ ํ•ด์‹œ ์ถ”์ถœ ๋ฐ Hashcat์„ ์‚ฌ์šฉํ•˜์—ฌ ํฌ๋ž™ (Kerberos, NTLM, CRAM-MD5, HTTP-Digestโ€ฆ)
  • ์‹œ๊ฐ์  ๋„คํŠธ์›Œํฌ ๋‹ค์ด์–ด๊ทธ๋žจ ๊ตฌ์ถ• (๋„คํŠธ์›Œํฌ ๋…ธ๋“œ ๋ฐ ์‚ฌ์šฉ์ž)
  • DNS ์ฟผ๋ฆฌ ์ถ”์ถœ
  • ๋ชจ๋“  TCP ๋ฐ UDP ์„ธ์…˜ ์žฌ๊ตฌ์„ฑ
  • ํŒŒ์ผ ์กฐ๊ฐํ™”

Capinfos

capinfos capture.pcap

Ngrep

pcap ๋‚ด์—์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ฐพ๊ณ  ์žˆ๋‹ค๋ฉด ngrep์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ฃผ์š” ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์ž…๋‹ˆ๋‹ค:

ngrep -I packets.pcap "^GET" "port 80 and tcp and host 192.168 and dst host 192.168 and src host 192.168"

Carving

์ผ๋ฐ˜์ ์ธ ์นด๋น™ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๋ฉด pcap์—์„œ ํŒŒ์ผ๊ณผ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•˜๋Š” ๋ฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

File/Data Carving & Recovery Tools

Capturing credentials

pcap ๋˜๋Š” ๋ผ์ด๋ธŒ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ž๊ฒฉ ์ฆ๋ช…์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด https://github.com/lgandx/PCredz์™€ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Check Exploits/Malware

Suricata

Install and setup

apt-get install suricata
apt-get install oinkmaster
echo "url = http://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz" >> /etc/oinkmaster.conf
oinkmaster -C /etc/oinkmaster.conf -o /etc/suricata/rules

pcap ํ™•์ธ

suricata -r packets.pcap -c /etc/suricata/suricata.yaml -k none -v -l log

YaraPcap

YaraPCAP๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.

  • PCAP ํŒŒ์ผ์„ ์ฝ๊ณ  Http ์ŠคํŠธ๋ฆผ์„ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.
  • gzip์œผ๋กœ ์••์ถ•๋œ ์ŠคํŠธ๋ฆผ์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.
  • yara๋กœ ๋ชจ๋“  ํŒŒ์ผ์„ ์Šค์บ”ํ•ฉ๋‹ˆ๋‹ค.
  • report.txt๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ์„ ํƒ์ ์œผ๋กœ ์ผ์น˜ํ•˜๋Š” ํŒŒ์ผ์„ ๋””๋ ‰ํ† ๋ฆฌ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

Malware Analysis

์•Œ๋ ค์ง„ ์•…์„ฑ์ฝ”๋“œ์˜ ์ง€๋ฌธ์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”:

Malware Analysis

Zeek

Zeek์€ ์ˆ˜๋™์ ์ด๊ณ  ์˜คํ”ˆ ์†Œ์Šค์ธ ๋„คํŠธ์›Œํฌ ํŠธ๋ž˜ํ”ฝ ๋ถ„์„๊ธฐ์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ์šด์˜์ž๋“ค์ด Zeek์„ ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ ๋ชจ๋‹ˆํ„ฐ(NSM)๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์˜์‹ฌ์Šค๋Ÿฌ์šด ๋˜๋Š” ์•…์˜์ ์ธ ํ™œ๋™์— ๋Œ€ํ•œ ์กฐ์‚ฌ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. Zeek์€ ๋ณด์•ˆ ๋„๋ฉ”์ธ์„ ๋„˜์–ด ์„ฑ๋Šฅ ์ธก์ • ๋ฐ ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ํฌํ•จํ•œ ๋‹ค์–‘ํ•œ ํŠธ๋ž˜ํ”ฝ ๋ถ„์„ ์ž‘์—…์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ zeek์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๋กœ๊ทธ๋Š” pcap์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ pcap์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ ๋กœ๊ทธ๋ฅผ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Connections Info

#Get info about longest connections (add "grep udp" to see only udp traffic)
#The longest connection might be of malware (constant reverse shell?)
cat conn.log | zeek-cut id.orig_h id.orig_p id.resp_h id.resp_p proto service duration | sort -nrk 7 | head -n 10

10.55.100.100   49778   65.52.108.225   443     tcp     -       86222.365445
10.55.100.107   56099   111.221.29.113  443     tcp     -       86220.126151
10.55.100.110   60168   40.77.229.82    443     tcp     -       86160.119664


#Improve the metrics by summing up the total duration time for connections that have the same destination IP and Port.
cat conn.log | zeek-cut id.orig_h id.resp_h id.resp_p proto duration | awk 'BEGIN{ FS="\t" } { arr[$1 FS $2 FS $3 FS $4] += $5 } END{ for (key in arr) printf "%s%s%s\n", key, FS, arr[key] }' | sort -nrk 5 | head -n 10

10.55.100.100   65.52.108.225   443     tcp     86222.4
10.55.100.107   111.221.29.113  443     tcp     86220.1
10.55.100.110   40.77.229.82    443     tcp     86160.1

#Get the number of connections summed up per each line
cat conn.log | zeek-cut id.orig_h id.resp_h duration | awk 'BEGIN{ FS="\t" } { arr[$1 FS $2] += $3; count[$1 FS $2] += 1 } END{ for (key in arr) printf "%s%s%s%s%s\n", key, FS, count[key], FS, arr[key] }' | sort -nrk 4 | head -n 10

10.55.100.100   65.52.108.225   1       86222.4
10.55.100.107   111.221.29.113  1       86220.1
10.55.100.110   40.77.229.82    134       86160.1

#Check if any IP is connecting to 1.1.1.1
cat conn.log | zeek-cut id.orig_h id.resp_h id.resp_p proto service | grep '1.1.1.1' | sort | uniq -c

#Get number of connections per source IP, dest IP and dest Port
cat conn.log | zeek-cut id.orig_h id.resp_h id.resp_p proto | awk 'BEGIN{ FS="\t" } { arr[$1 FS $2 FS $3 FS $4] += 1 } END{ for (key in arr) printf "%s%s%s\n", key, FS, arr[key] }' | sort -nrk 5 | head -n 10


# RITA
#Something similar can be done with the tool rita
rita show-long-connections -H --limit 10 zeek_logs

+---------------+----------------+--------------------------+----------------+
|   SOURCE IP   | DESTINATION IP | DSTPORT:PROTOCOL:SERVICE |    DURATION    |
+---------------+----------------+--------------------------+----------------+
| 10.55.100.100 | 65.52.108.225  | 443:tcp:-                | 23h57m2.3655s  |
| 10.55.100.107 | 111.221.29.113 | 443:tcp:-                | 23h57m0.1262s  |
| 10.55.100.110 | 40.77.229.82   | 443:tcp:-                | 23h56m0.1197s  |

#Get connections info from rita
rita show-beacons zeek_logs | head -n 10
Score,Source IP,Destination IP,Connections,Avg Bytes,Intvl Range,Size Range,Top Intvl,Top Size,Top Intvl Count,Top Size Count,Intvl Skew,Size Skew,Intvl Dispersion,Size Dispersion
1,192.168.88.2,165.227.88.15,108858,197,860,182,1,89,53341,108319,0,0,0,0
1,10.55.100.111,165.227.216.194,20054,92,29,52,1,52,7774,20053,0,0,0,0
0.838,10.55.200.10,205.251.194.64,210,69,29398,4,300,70,109,205,0,0,0,0

DNS ์ •๋ณด

#Get info about each DNS request performed
cat dns.log | zeek-cut -c id.orig_h query qtype_name answers

#Get the number of times each domain was requested and get the top 10
cat dns.log | zeek-cut query | sort | uniq | rev | cut -d '.' -f 1-2 | rev | sort | uniq -c | sort -nr | head -n 10

#Get all the IPs
cat dns.log | zeek-cut id.orig_h query | grep 'example\.com' | cut -f 1 | sort | uniq -c

#Sort the most common DNS record request (should be A)
cat dns.log | zeek-cut qtype_name | sort | uniq -c | sort -nr

#See top DNS domain requested with rita
rita show-exploded-dns -H --limit 10 zeek_logs

๋‹ค๋ฅธ pcap ๋ถ„์„ ํŒ

DNSCat pcap analysis

Wifi Pcap Analysis

USB Keystrokes

โ€‹

Tip

AWS ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE)
GCP ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE) Azure ํ•ดํ‚น ๋ฐฐ์šฐ๊ธฐ ๋ฐ ์—ฐ์Šตํ•˜๊ธฐ: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks ์ง€์›ํ•˜๊ธฐ