Korzystanie z netcat do rejestrowania ruchu do pliku

1

Obecnie mam laptopa z systemem Windows 10 podłączony do laptopa Ubuntu 12.04 przez Ethernet. Cały ruch z systemu Windows został skierowany do laptopa Linux i przez bezprzewodowy interfejs systemu Linux do Wi-Fi. Zadanie polegało na skonfigurowaniu systemu Linux do rejestrowania ruchu. Moją pierwszą myślą było użycie Wiresharka. Poproszono mnie jednak o dzienniki w określonym formacie. Oto przykładowy format, który otrzymałem:

GET /
Host: bing.com
Cookie: MUID=0B62F80D880C681C2DB4F14E8C0C6BC5

HTTP/1.0 301 Moved Permanently
Date: Wed, 29 Jun 2016 19:34:28 GMT
Location: http://www.bing.com/
----------------------------------------------------------

Początkowo zapytano mnie również, czy netcat byłby odpowiedni. Więc po słowach pomyślałem, że netcat wydaje się odpowiedni. Jednak nigdy nie korzystałem z NetCata do logowania. Szukałem innych metod i próbowałem metod obejmujących rury i fifo (o których nie wiem). Zawsze wydaje mi się, że kończą się tym samym wynikiem pustego pliku wyjściowego. Każda pomoc będzie mile widziana. Dzięki.

CorruptOffset
źródło

Odpowiedzi:

0

Wyświetlane „dzienniki” to żądanie HTTP i odpowiedź HTTP. Nie użyłbym tego, ncponieważ wydaje się, że to tylko zwiększa złożoność.

Poleciłbym użyć tcpdump. Przechwytuje to w zasadzie te same dane, co wireshark, a nawet parsowania zrzutów za pomocą Wireshark. Jeśli próbuję zebrać żądania HTTP i odpowiedzi, lubię skorzystać z tej -Aopcji.

Wydaje mi się, że to działa, aby pokazać te nagłówki:

tcpdump -A -s 8000 '(port 80 or port 443) and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' | awk --re-interval 'match($0,/^.{8}((GET |HTTP\/|POST |HEAD ).*)/,a){print "\n"a[1];h=2}$0~/^.{0,1}$/&&h{h--}h&&/^[A-Za-z0-9-]+: /{print}' >> your_log_file

Powyższe polecenie należy uruchomić jako root. Jeśli używasz go jako inny użytkownik, od tego, czy chcesz tylko uchwycić za pomocą jednego interfejsu, należy dodać -i <your_device>do tcpdump. Na przykład:

tcpdump -i eth0 -A -s 8000 '(port 80 or port 443) and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)' | awk --re-interval 'match($0,/^.{8}((GET |HTTP\/|POST |HEAD ).*)/,a){print "\n"a[1];h=2}$0~/^.{0,1}$/&&h{h--}h&&/^[A-Za-z0-9-]+: /{print}' >> your_log_file
DKing
źródło
Więc dokładnie skopiowałem i wkleiłem twój kod. Należy pamiętać, że tak naprawdę nie rozumiałem żadnej części poleceń poza faktem, że pierwszym słowem było polecenie, pozostałe to parametry i opcje. Otrzymałem odpowiedź, która brzmiała: tcpdump: awk: linia 1: nie znaleziono odpowiedniego urządzenia błąd składniowy przy lub w pobliżu,
CorruptOffset
Spróbuj uruchomić to jako root, aby móc słuchać wszystkich urządzeń. W przeciwnym razie dodaj -i <your_device>do, tcpdumpaby określić urządzenie sieciowe.
DKing
1
Wpisałem tcpdump -i eth0 i zacząłem widzieć, że ruch jest przechwytywany. Jak miałbym to wyeksportować do pliku dziennika i czy byłby w tym samym formacie? PS Powiedziano mi, żeby plik dziennika wyglądał dokładnie tak, jak zamieściłem format próbny.
CorruptOffset,
Po prostu użyj >> your_filename. Zedytuję odpowiedź z tym w tym.
DKing
Dziękuję bardzo za pomoc. Bardzo mi pomogłeś. Tak jak ostatnie pytanie. Masz pomysł, jak uzyskać format?
CorruptOffset,
0

ngrep zapewnia pola, których szukasz, ale potrzebujesz skryptu, aby upewnić się, że dane wyjściowe są w prawidłowej kolejności (zakładając, że będą nakładające się żądania / odpowiedzi).

http://ngrep.sourceforge.net/usage.html

Przykład:

[user@host~]$ngrep -W byline -q 'HTTP'

T 172.999.999.999:65535 -> 198.41.209.136:80 [AP]
GET / HTTP/1.1.
User-Agent: Wget/1.17.1 (linux-gnu).
Accept: */*.
Accept-Encoding: identity.
Host: reddit.com.
Connection: Keep-Alive.
.


T 198.41.209.136:80 -> 172.999.999.999:65535 [AP]
HTTP/1.1 301 Moved Permanently.
Date: Sat, 13 Aug 2016 13:55:26 GMT.
Transfer-Encoding: chunked.
Connection: keep-alive.
Set-Cookie: __cfduid=9999999999999999999999999999999999999999; expires=Sun, 13-Aug-17 13:55:26 GMT; path=/; domain=.reddit.com; HttpOnly.
Location: https://www.reddit.com/.
X-Content-Type-Options: nosniff.
Server: cloudflare-nginx.
Jeff S.
źródło