Страницы

SSL MITM с помощью mitmdump/mitmproxy

Burp классная штука, но есть у него один косяк.




В Burp нельзя поменять HTTPS сертификат, что является серьезным демаскирующим признаком. Я пробовал подменять файлик burpsuite_free.zip\resources\Crypto\ps.p12, но не сработало.

Тулза mitmdump/mitmproxy из комплекта Kali linux поэтому выглядит гораздо более привлекательным решением, если вам нужно скрытно подампить https.

Далее небольшой гайд.

Генерируем правильный сертификат

openssl genrsa -out CA.key
openssl req -new -key CA.key -x509 -days 1095 -out CA.crt

На вопросы openssl ответить можно, например, так:
C = US
O = VeriSign, Inc.
OU = (c) 2006 VeriSign, Inc. - For authorized use only
CN = VeriSign Class 3 Public Primary Certification Authority - G5

Чтобы сделать сертификат в формате pem, который понимает mitmproxy, достаточно выполнить:
cat CA.crt CA.key > CA.pem

.crt файл необходимо установить в браузер жертвы.
pem файл переместить в каталог .mitmproxy и заменить mitmproxy-ca.pem

Теперь сертификат будет выглядеть намного посимпатичней.
Но проблема с mitmproxy в другом. Она использует уникальный формат дампа, который не совместим более ни с чем.

Работаем с дампом mitmproxy

РазGREPать дамп mitmproxy - это боль главным образом из-за наличия gzip'нутого HTML. Нет импорта в tcpdump/wireshark (ибо mitmproxy не хватает IP заголовки), нет импорта в curl, нет вообще импорта!

Более менее нормально работать с дампом можно только с помощью Python. 
Я набросал скрипт (на базе read_dumpfile отсюда), который выводит разжатый http response body, который дальше можно читать grep'ом и пр. Может, кому пригодится.

#!/usr/bin/env python
#
# Get ungzipped http response body
# run: python readdump.py dumpfile
#

from libmproxy import flow

import zlib
import sys

with open(sys.argv[1], "rb") as logfile:
  freader = flow.FlowReader(logfile)
for f in freader.stream():
   try: 
  body = f.response.body
          print(zlib.decompress(body, 31))
        print("===================================")
   except:
print("Error")  

To do на след.раз: сгенерировать максимально похожую копию какого-нибудь trusted root CA так, чтобы даже fingerprint был визуально похож на реальный. Кто-нибудь случайно не знает утилиту, которая это может?

Комментариев нет:

Отправить комментарий