Zum Hauptinhalt springen

Oftmals ist die einzige oder zumindest schnellste Möglichkeit, Probleme bei der Netzwerkkommunikation zu beheben, das Sammeln einer Kommunikationsaufzeichnung und deren Übermittlung an einen Experten zur Analyse. Wenn der Experte nicht zu Ihrem Unternehmen gehört, kann dies Sicherheitsbedenken aufwerfen, da die Aufzeichnung Anwendungsdaten enthält. In der Regel sind jedoch die Protokoll-Header von Ethernet, IP, TCP, UDP oder ICMP wichtig und nicht die Anwendungsdaten. In diesem Fall können Sie entweder von vornherein keine Daten erfassen oder die Daten nach der Erfassung entfernen.

Mit packet_monitor können Sie alle Header, aber keine Daten mit dem folgenden Befehl erfassen

packet_monitor -interface #INTERFACE -numeric -time_stamp -verbose -pkt_hdr     

Dabei ist INTERFACE der Gerätename der IP-Schnittstelle, wie er durch den Befehl „ifconfig -all“ angezeigt wird. Die Ablaufverfolgung sieht wie folgt aus

dir                                                 icmp Typ
+        tcp
hh:mm:ss.ttt dir   len proto Quelle             Ziel         src Port  ds
+t Port  Typ
11:40:21.234 Xmit Ether Dst 00:23:54:52:18:6e  Src 00:00:a8:43:52:22 Type 0800
+(IP)
IP   Ver/HL 45, ToS  0, Len   78, ID 2212, Flg/Frg    0, TTL 3c,  Prtl  6
Cksum  788b, Src a4984d80, Dst a4984d32
TCP von 164.152.77.128.22 an 164.152.77.50.6991
seq  1332611210, ack 3416994988, window  8192, 80 Datenbytes, Flags Push Ack
+.
X/Off 05, Flags 18, Cksum c3aa,  Urg-> 0000

11:40:21.235 Xmit Ether Dst 00:23:54:52:18:6e  Src 00:00:a8:43:52:22 Type 0800
+(IP)
IP   Ver/HL 45, ToS  0, Len   a8, ID 2213, Flg/Frg    0, TTL 3c,  Prtl  6
Cksum  785a, Src a4984d80, Dst a4984d32
TCP von 164.152.77.128.22 an 164.152.77.50.6991
seq  1332611290, ack 3416994988, window  8192, 128 Datenbytes, Flags Push Ac
+k.
X/Off 05, Flags 18, Cksum ce9f,  Urg-> 0000

11:40:21.236 Empfangen Ether Ziel 00:00:a8:43:52:22  Quelle 00:23:54:52:18:6e Typ 0800
+(IP)
IP   Ver/HL 45, ToS  0, Len   28, ID 3032, Flg/Frg 4000, TTL 80,  Prtl  6
Cksum  e6ba, Src a4984d32, Dst a4984d80
TCP von 164.152.77.50.6991 an 164.152.77.128.22
seq  3416994988, ack 1332611418, window 16176, 0 Datenbytes, Flags Ack.
X/Off 05, Flags 10, Cksum 183c,  Urg-> 0000

11:40:21.952 Xmit Ether Dst 00:23:54:52:18:6e  Src 00:00:a8:43:52:22 Type 0800
+(IP)
IP   Ver/HL 45, ToS  0, Len   a8, ID 2214, Flg/Frg    0, TTL 3c,  Prtl  6
Cksum  7859, Src a4984d80, Dst a4984d32
TCP von 164.152.77.128.22 an 164.152.77.50.6991
seq  1332611418, ack 3416994988, window  8192, 128 Datenbytes, Flags Push Ac
+k.
X/Off 05, Flags 18, Cksum 59a9,  Urg-> 0000

11:40:21.953 Xmit Ether Dst 00:23:54:52:18:6e  Src 00:00:a8:43:52:22 Type 0800
+(IP)
IP   Ver/HL 45, ToS  0, Len   98, ID 2215, Flg/Frg    0, TTL 3c,  Prtl  6
Cksum  7868, Src a4984d80, Dst a4984d32
TCP von 164.152.77.128.22 zu 164.152.77.50.6991
seq  1332611546, ack 3416994988, Fenster  8192, 112 Datenbytes, Flags Push Ac
+k.
X/Off 05, Flags 18, Cksum 2b4e,  Urg-> 0000

Das Problem bei diesem Ansatz ist, dass sich das Problem manchmal als anwendungsbezogen herausstellt und Sie die Anwendungsdaten benötigen. Wenn Sie zu Beginn keine vollständige Ablaufverfolgung erfasst haben, müssen Sie entweder das Problem reproduzieren oder warten, bis es erneut auftritt. Es ist viel einfacher, einen vollständigen Trace zu sammeln, indem Sie die Argumente „-hex_dump“ und „-length 1500“ hinzufügen und dann die Anwendungsdaten aus einer Kopie entfernen, wenn Sie den Trace zunächst zur Analyse versenden. Die folgende Abbildung zeigt den Befehl und den Trace, aber aus Platzgründen habe ich den Trace bearbeitet, um die meisten Anwendungsdaten zu entfernen.

packet_monitor -interface #sdlmux.m16.11-3 -numeric -time_stamp -verbose -pkt_hd
+r -hex_dump -length 1500
dir                                                 icmp type
+        tcp
hh:mm:ss.ttt dir   len proto source             destination         src port  ds
+t port  type
13:52:04.672 Xmit Ether Dst 00:23:54:52:18:6e  Src 00:00:a8:43:52:22 Type 0800
+(IP)
IP   Ver/HL 45, ToS  0, Len  5dc, ID 9eaa, Flg/Frg    0, TTL 3c,  Prtl  6
Cksum  f68e, Src a4984d80, Dst a4984d32
TCP from 164.152.77.128.22 to 164.152.77.50.6991
seq  1335114362, ack 3417069804, window 65535, 1460 data bytes, flags Push A
+ck.
X/Off 05, Flags 18, Cksum 8d33,  Urg-> 0000
offset 0  .  .  .  4  .  .  .   8  .  .  .  C  .  .  .  0...4... 8...C...
0      22 cd 33 93 25 7b 85 39   7 c4 3b 7e c9 a9 d5 d9  "M3>%{>9 <D;~I)UY
10     63 25 a7 80  6 d7 4f c9  e7 7a 91 1e 4b e7 b7 a5  c%'><WOI gz><Kg7%
20     4f 4c bf 1d 2a 3d 72 53  99 41 b8 c4 26 24 31 4d  OL?<*=rS >A8D&$1M
. . .
590    98 bc af 74 d1 71 88 3f  3d 90 22 d3 91 86 92 4e  ></tQq>? =>"S>>>N
5a0    da cc d8  7 18 e7 9e 55  c8 f1 af d3 30  0 35  4  ZLX<<g>U Hq/S0 5<
5b0    ac e8 f0 82                                       ,hp>

13:52:04.692 Rcvd Ether Dst 00:00:a8:43:52:22  Src 00:23:54:52:18:6e Type 0800
+(IP)
IP   Ver/HL 45, ToS  0, Len   28, ID 9324, Flg/Frg 4000, TTL 80,  Prtl  6
Cksum  83c8, Src a4984d32, Dst a4984d80
TCP from 164.152.77.50.6991 to 164.152.77.128.22
seq  3417069804, ack 1335120266, window 16384, 0 data bytes, flags Ack.
X/Off 05, Flags 10, Cksum aad4,  Urg-> 0000
No tcp data.

13:52:04.692 Xmit Ether Dst 00:23:54:52:18:6e  Src 00:00:a8:43:52:22 Type 0800
+(IP)
IP   Ver/HL 45, ToS  0, Len  5dc, ID 9eab, Flg/Frg    0, TTL 3c,  Prtl  6
Cksum  f68d, Src a4984d80, Dst a4984d32
TCP from 164.152.77.128.22 to 164.152.77.50.6991
seq  1335120266, ack 3417069804, window 65535, 1460 data bytes, flags Ack.
X/Off 05, Flags 10, Cksum 2626,  Urg-> 0000
offset 0  .  .  .  4  .  .  .   8  .  .  .  C  .  .  .  0...4... 8...C...
0      a0 95 bb 79 99 93 c9 52  ac 11 69 fd d5 a9 39 b8   >;y>>IR ,<i}U)98
10     fd  4 2e ec 3e eb 87 9d  3f 96 a9 91 2e b2 c8 91  }<.l>k>> ?>)>.2H>
20     6a b3 7e 9f cc 79 6f e2  9f  5 c6 a0 e4 95 57 9c  j3~>Lyob ><F d>W>
. . .
590    88 d8 2e b6 54 c1 25 95  c4 38 d9  0 55 36 32 58  >X.6TA%> D8Y U62X
5a0    2d ba 81 2c e5 51 8a 3b  ef cd 98 29 a1 c2 82 24  -:>,eQ>; oM>)!B>$
5b0    90 33 6e e8                                       >3nh

13:52:04.694 Xmit Ether Dst 00:23:54:52:18:6e  Src 00:00:a8:43:52:22 Type 0800
+(IP)
IP   Ver/HL 45, ToS  0, Len  3a4, ID 9eac, Flg/Frg    0, TTL 3c,  Prtl  6
Cksum  f8c4, Src a4984d80, Dst a4984d32
TCP from 164.152.77.128.22 to 164.152.77.50.6991
seq  1335121726, ack 3417069804, window 65535, 892 data bytes, flags Push Ac
+k.
X/Off 05, Flags 18, Cksum d4c2,  Urg-> 0000
offset 0  .  .  .  4  .  .  .   8  .  .  .  C  .  .  .  0...4... 8...C...
0      23 2a 5a 1a e3 34 e7 b4  62 d7 ee 55 7c 38 f7  a  #*Z<c4g4 bWnU|8w<
10     cb b6 95  4  6 d8 b8  e  7d 88 68 a7 24 7a ed bd  K6><<X8< }>h'$zm=
20     57 ce 14 43 6c 17 56 5a  25 7d 9b f5 88 d9 97 29  WN<Cl<VZ %}>u>Y>)
. . .
350     8 a3 86  6 24 bc cc b9  d6 3f af ab  f bd 38 ca  <#><$<L9 V?/+<=8J
360    da b5  6 8a bf 2b 49 90  a2 d4 27 f5 79 a1  9 1a  Z5<>?+I> "T'uy!<<
370    5c 87 6b ae f0 d2 e8 45  14 b3 12 b5              >k.pRhE <3<5

13:52:04.695 Rcvd Ether Dst 00:00:a8:43:52:22  Src 00:23:54:52:18:6e Type 0800
+(IP)
IP   Ver/HL 45, ToS  0, Len   58, ID 9325, Flg/Frg 4000, TTL 80,  Prtl  6
Cksum  8397, Src a4984d32, Dst a4984d80
TCP from 164.152.77.50.6991 to 164.152.77.128.22
seq  3417069804, ack 1335120266, window 16384, 48 data bytes, flags Push Ack
+.
X/Off 05, Flags 18, Cksum dde1,  Urg-> 0000
offset 0  .  .  .  4  .  .  .   8  .  .  .  C  .  .  .  0...4... 8...C...
0     84 2c 64 69 88 5d c5 b2  bc 6c ca 4e af 15 be 2e  >,di>]E2 <lJN/<>.
10    3f 87 93 79 a0 b7 5d d5  3c 35 7f 2d db 7e be 44  ?>>y 7]U <5<-[~>D
20    a8 24 6d 96 6f f0 79 c1  d6 9c c3 be 64 4b 7d 4c  ($m>opyA V>C>dK}L

Es gibt mehrere Möglichkeiten, die Anwendungsdaten aus der Ablaufverfolgung zu entfernen. Sie können die Ablaufverfolgung manuell bearbeiten. Bei kurzen Ablaufverfolgungen ist dies möglicherweise möglich, bei längeren Ablaufverfolgungen ist dies jedoch nicht durchführbar. Ich habe zuvor zwei Perl-Skripte veröffentlicht, die verwendet werden können. Das erste Skript , pm21line.pl, dient dazu, alle Kopfzeilen in eine Zeile zu setzen und die Anwendungsdaten zu entfernen. Das Skript verwendet IO-Indikation, daher muss es unter der Bash-Umgebung ausgeführt werden.

bash
bash-2.05$ perl pm21line.pl < full_trace.out > 1line_trace.out
bash-2.05$ exit
exit
ready  17:21:00

d 1line_trace.out%phx_vos#m16_mas>SysAdmin>Noah_Davids>1line_trace.out  10-10-1
+0 17:21:08 mst

13:52:04.672 Xmit Ether Dst 00:23:54:52:18:6e  Src 00:00:a8:43:52:22 Type 0800
+(IP) IP   Ver/HL 45, ToS  0, Len  5dc, ID 9eaa, Flg/Frg    0, TTL 3c,  Prtl  6
+TCP from 164.152.77.128.22 to 164.152.77.50.6991     seq  1335114362, ack 34170
+69804, window 65535, 1460 data bytes, flags Push Ack.
13:52:04.692 Rcvd Ether Dst 00:00:a8:43:52:22  Src 00:23:54:52:18:6e Type 0800
+(IP) IP   Ver/HL 45, ToS  0, Len   28, ID 9324, Flg/Frg 4000, TTL 80,  Prtl  6
+TCP from 164.152.77.50.6991 to 164.152.77.128.22     seq  3417069804, ack 13351
+20266, window 16384, 0 data bytes, flags Ack.
13:52:04.692 Xmit Ether Dst 00:23:54:52:18:6e  Src 00:00:a8:43:52:22 Type 0800
+(IP) IP   Ver/HL 45, ToS  0, Len  5dc, ID 9eab, Flg/Frg    0, TTL 3c,  Prtl  6
+TCP from 164.152.77.128.22 to 164.152.77.50.6991     seq  1335120266, ack 34170
+69804, window 65535, 1460 data bytes, flags Ack.
13:52:04.694 Xmit Ether Dst 00:23:54:52:18:6e  Src 00:00:a8:43:52:22 Type 0800
+(IP) IP   Ver/HL 45, ToS  0, Len  3a4, ID 9eac, Flg/Frg    0, TTL 3c,  Prtl  6
+TCP from 164.152.77.128.22 to 164.152.77.50.6991     seq  1335121726, ack 34170
+69804, window 65535, 892 data bytes, flags Push Ack.
13:52:04.695 Rcvd Ether Dst 00:00:a8:43:52:22  Src 00:23:54:52:18:6e Type 0800
+(IP) IP   Ver/HL 45, ToS  0, Len   58, ID 9325, Flg/Frg 4000, TTL 80,  Prtl  6
+TCP from 164.152.77.50.6991 to 164.152.77.128.22     seq  3417069804, ack 13351
+20266, window 16384, 48 data bytes, flags Push Ack.

Das Einzeilenformat ist nützlich, wenn die Ablaufverfolgung Pakete aus mehreren Verbindungen enthält und Sie nur an einer Teilmenge dieser Verbindungen interessiert sind. Nach dem Erstellen des Einzeilenformats können Sie ganz einfach nach den eindeutigen Merkmalen der Verbindungen filtern, die Sie interessieren.

Das zweite Skript match.pl zeigt eine Datei an und ermöglicht Ihnen, mehrere Zeichenfolgen abzugleichen. Zum Beispiel

perl match.pl -file full_trace.out -match Ether -match IP -match Cksum -match TC
+P -match seq -dots
****************************** full_trace.out ******************************.
 . .
13:52:04.672 Xmit Ether Dst 00:23:54:52:18:6e  Src 00:00:a8:43:52:22 Type 0800
+(IP)
IP   Ver/HL 45, ToS  0, Len  5dc, ID 9eaa, Flg/Frg    0, TTL 3c,  Prtl  6
Cksum  f68e, Src a4984d80, Dst a4984d32
TCP von 164.152.77.128.22 zu 164.152.77.50.6991
seq  1335114362, ack 3417069804, Fenster 65535, 1460 Datenbytes, Flags Push A
+ck.
X/Off 05, Flags 18, Cksum 8d33,  Urg-> 0000.
 . .
13:52:04.692 Empfangen Ether Ziel 00:00:a8:43:52:22  Quelle 00:23:54:52:18:6e Typ 0800
+(IP)
IP   Ver/HL 45, ToS  0, Len   28, ID 9324, Flg/Frg 4000, TTL 80,  Prtl  6
Cksum  83c8, Src a4984d32, Dst a4984d80
TCP von 164.152.77.50.6991 an 164.152.77.128.22
seq  3417069804, ack 1335120266, window 16384, 0 Datenbytes, Flags Ack.
X/Off 05, Flags 10, Cksum aad4,  Urg-> 0000.
 . .
13:52:04.692 Xmit Ether Dst 00:23:54:52:18:6e  Src 00:00:a8:43:52:22 Type 0800
+(IP)
IP   Ver/HL 45, ToS  0, Len  5dc, ID 9eab, Flg/Frg    0, TTL 3c,  Prtl  6
Cksum  f68d, Src a4984d80, Dst a4984d32
TCP von 164.152.77.128.22 an 164.152.77.50.6991
seq  1335120266, ack 3417069804, window 65535, 1460 Datenbytes, Flags Ack.
X/Off 05, Flags 10, Cksum 2626,  Urg-> 0000.
 . .
13:52:04.694 Xmit Ether Dst 00:23:54:52:18:6e  Src 00:00:a8:43:52:22 Type 0800
+(IP)
IP   Ver/HL 45, ToS  0, Len  3a4, ID 9eac, Flg/Frg    0, TTL 3c,  Prtl  6
Cksum  f8c4, Src a4984d80, Dst a4984d32
TCP von 164.152.77.128.22 an 164.152.77.50.6991
seq  1335121726, ack 3417069804, window 65535, 892 Datenbytes, Flags Push Ac
+k.
X/Off 05, Flags 18, Cksum d4c2,  Urg-> 0000.
 . .
13:52:04.695 Rcvd Ether Dst 00:00:a8:43:52:22  Src 00:23:54:52:18:6e Type 0800
+(IP)
IP   Ver/HL 45, ToS  0, Len   58, ID 9325, Flg/Frg 4000, TTL 80,  Prtl  6
Cksum  8397, Src a4984d32, Dst a4984d80
TCP von 164.152.77.50.6991 an 164.152.77.128.22
seq  3417069804, ack 1335120266, window 16384, 48 Datenbytes, Flags Push Ack
+.
X/Off 05, Flags 18, Cksum dde1,  Urg-> 0000.
 . .

Manchmal sind nicht nur die Daten geheim zu halten. Weitere identifizierende Teile der Spur sind die IP-Adressen und Portnummern. Wenn Sie Ihre internen IP-Adressen verbergen möchten, müssen Sie die Änderungen manuell mit der globalen Such- und Ersetzungsfunktion in Ihrem bevorzugten Editor vornehmen. Die IP-Adressen erscheinen jedoch an vier Stellen in jedem Paket. Die ersten beiden befinden sich in Hex und die beiden anderen im Dot-Decimal oder möglicherweise als Name, wenn Sie das Argument -numeric nicht verwendet haben (ich empfehle, immer -numeric zu verwenden, da dies schneller ist, da keine Namensauflösung erfolgt und die Netzwerkbeziehungen dadurch ersichtlich werden). Die Port oder der Name erscheint nur an zwei Stellen.

13:52:04.695 Empfangen Ether Ziel 00:00:a8:43:52:22  Quelle 00:23:54:52:18:6e Typ 0800
+(IP)
IP   Ver/HL 45, ToS  0, Len   58, ID 9325, Flg/Frg 4000, TTL 80,  Prtl  6
Cksum  8397, Src a4984d32, Dst a4984d80
TCP von 164.152.77.50.6991 zu 164.152.77.128.22
seq  3417069804, ack 1335120266, window 16384, 48 data bytes, flags Push Ack
+.
X/Off 05, Flags 18, Cksum dde1,  Urg-> 0000

Beachten Sie, dass das Ändern der IP-Adressen nicht ganz so einfach ist wie das Auswählen einer beliebigen Zahl, sondern dass Sie die Beziehungen zwischen den Adressen beibehalten müssen. Zwei Adressen, die sich vor der Änderung im selben Subnetz oder Netzwerk befanden, müssen sich auch nach der Änderung im selben Subnetz oder Netzwerk befinden. Ebenso müssen zwei Adressen, die sich vor der Änderung in unterschiedlichen Subnetzen oder Netzwerken befanden, auch nach der Änderung in unterschiedlichen Subnetzen oder Netzwerken bleiben. Eine Änderung dieser Beziehung kann erhebliche Auswirkungen auf die Interpretation der Ablaufverfolgung haben.