Как да напиша http слой снифър

Искам да напиша снифър на приложен слой (SMTP/ftp/http).

Въз основа на моите търсения, първата (и може би най-трудната!) стъпка е повторно сглобяване на tcp потока на надушените връзки.

Наистина, това, от което се нуждая, е нещо като опцията „следване на TCP поток“ на wireshark, но имам нужда от инструмент, който да го прави на жив интерфейс и автоматично. Както знам, Tshark може автоматично да извлича данни от TCP потоци от запазените pcap файлове (link), но не и от интерфейси на живо. Може ли Tshark да го направи на живи интерфейси???

Както знам, TCPflow може да прави точно това, което искам, но не може да обработва IP дефрагментиране и SSL връзки (искам да анализирам SSL съдържанието в случай, че имам частния ключ на сървъра).

И накрая, пробвам и брат мрежов монитор. Въпреки че предоставя списък с TCP връзки (conn.log), не успях да получа съдържанието на TCP връзките.

Всяко предложение относно споменатите инструменти или всеки друг полезен инструмент е добре дошъл.

Благодаря предварително, Дан.


person user3162097    schedule 05.01.2014    source източник


Отговори (2)


библиотеката perl Net::Inspect може да ви помогне. Той също така идва с tcpudpflow, който може да записва tcp и udp потоци в отделни файлове, подобно на tcpflow. Работи с pcap файлове или може да прави заснемания на живо. Библиотеката обработва IP фрагментирането. Той също така идва с httpflow инструмент за извличане на HTTP заявки и отговори (включително декомпресия, кодиране на парчета...). В момента не поддържа SSL.

Като автор на тази библиотека не мисля, че извличането на TCP потоци е най-трудната част, HTTP анализаторът (с изключение на декомпресията, включително режим на парчета) е почти два пъти по-голям от IP и TCP взети заедно.

person Steffen Ullrich    schedule 05.01.2014

Този пример работи за повторно сглобяване на данни от приложения на един протокол:

tshark -Y "tcp.dstport == 80" -T fields -d tcp.port==80,echo -e echo.data

Той улавя живи http данни, сглобява ги отново и ги извежда като необработен шестнадесетичен.

Мога да добавя малък скрипт за разбор на шестнадесетичния код в ascii, ако желаете.

Искам да анализирам SSL съдържанието в случай, че имам частния ключ на сървъра

TL;DR: Това не може да се направи само с инструмент за заснемане.

Защо не: Защото всяка SSL сесия генерира нов таен ключ за разговор и не можете да дешифрирате сесията без този ключ. Наличието на ключ на частния сървър не е достатъчно. Идеята зад това е, че ако някой улови вашия SSL трафик, запази го и след това година по-късно той "намери" ключа на частния сървър, тогава той все още няма да може да дешифрира вашия трафик.

person Hibuki    schedule 01.03.2016