Поиск данных с помощью Wireshark
Рассмотрим нетривиальную задачу…
Мы можем снять трейсы определенного интерфейса и рассчитываем достать из этих трейсов нужную нам информацию (например, zip архив, интересующий нас jpeg файл или секретный PDF документ).
Итак, поехали…
1. Способ Follow TCP stream
Для использования этого метода, нам нужно точно знать, что искомые данные находятся в определенном пакете. Определить это можно «увидев» передачу данных в потоке TCP. На пакете, в котором мы предполагаем велась передача данных, нажимаем правой кнопкой и выбираем Follow TCP Stream (см. рисунок ниже):
Затем в появившемся окне выбираем сохранить данные на диск, не забыв указать расширение файла (см. рисунок ниже):
Хочу отметить несколько очень важных моментов (см. следующий рисунок):
- Если Вы точно не знаете расширение сохраняемого файла, то заголовок файла может помочь Вам его «опознать» – в нашем случае JFIF указывает что это jpg файл.
Хозяйке на заметку: файлы, начинающиеся с «MZ» являются исполняемыми.
- Также важно выбрать направление в котором велась передача файла, т.е. выбрать направление либо от сервера к клиенту, либо наоборот – определить это можно по IP адресам.
- Необходимо выбрать сохранение файла из «Raw» данных.
2. Фильтр data contains
Один из самых простых способов найти нужный нам пакет, жаль только не всегда срабатывает этот метод 🙂
В поле фильтра можно вбить:
data contains “SYS” – например, для поиска строковых значений в полях data, содержащих значение SYS (см. рисунок ниже).
Дальнейшие действия полностью совпадают с первым пунктом, т.е. выбрать пакет, содержащий необходимую нам информацию, нажать правой кнопкой – выбрать Follow TCP stream, а затем сохранить файл, указав его расширение.
В понимании Wireshark, этот фильтр воспринимается как поиск пакетов, содержащих «полезную нагрузку», т.е. те данные которые не принадлежат определенному протоколу и которые Wireshark не может расшифровать дальше.
Фильтр похож на поиск, реализованный по ссылке Edit => Find Packet (см. рисунок ниже):

Следует быть внимательным с этим фильтром, т.к. если искомая строка не будет попадать в поле «data», то Wireshark ничего не найдет.
3. Фильтр frame[х]
Для того, чтобы воспользоваться этим методом, нам необходимо знать hex значение для ASCII символов типа файлов, которые мы ищем, т.к. фильтр frame[] принимает в качестве параметров только значения hex. Например, если мы ищем в трейсе файлы pdf, то нам необходимо знать hex значение для ASCII символов PDF. Узнать значения можно с помощью любого hex редактора. Я воспользуюсь бесплатной программой FileAlyzer.
Для этого необходимо открыть любой документ pdf в программе и перейти на закладку «Hex dump», а затем на закладку «Hex / Strings (new)». Здесь мы видим, что ASCII последовательности символов %PDF соответствует hex значение 25:50:44:46 (см. рисунок ниже).
Теперь в Wireshark’e, в строке фильтра вбиваем значение полученные из FileAlyzer.
Для этого вбиваем в поле фильтра следующие данные:
frame[54:4] == 25:50:44:46, где
54 (десятичное) = 0x36 (hex) означаем оффсет, т.е. начало поиска, позицию с которой будем искать указанное значение (см. рисунок ниже):
4 – означает, что мы ищем 4 байта информации, со значением указанным после ==
25:50:44:46 – hex значение ASCII символов %PDF (см. рисунок ниже).
Главное в этом фильтре не ошибиться со значением Offset’a, если «промахнуться» то Wireshark не отобразит пакет с таким значением.
Дальнейшие действия полностью совпадают с первым пунктом, т.е. выбрать пакет, содержащий необходимую нам информацию, нажать правой кнопкой – выбрать Follow TCP stream, а затем сохранить файл, указав его расширение.
Да, кстати, к чему это я о поиске файлов и GPRS…
Если у нас «случайно» есть доступ к Gn интерфейсу (между SGSN‘ом и [[GGSN’]]ом), то с помощью Wireshark мы можем снять трейс, указав в качестве протокола GTP и воспользовавшись одним из рассмотренных способов достать конфиденциальные данные.
Попробую это сделать с помощью Follow TCP stream, на «случайно» снятом трейсе передачи MMS на email с Gn интерфейса (см. рисунок ниже).
Пришлось выбрать только часть, относящуюся к данным картинки (см. рисунок ниже):
В итоге получаем сверхсекретный рисунок:
Это конечно же не единственные способы поиска нужных нам файлов в снятом трейсе с помощью Wireshark, но и с их помощью уже можно найти некоторые данные. В следующей статье, я покажу как можно реализовать MITM атаку для GPRS сети, используя как раз Wireshark и доступ к Gn интерфейсу.