Сетевая аномалия Рекомендуемые утилиты: Wireshark...
創建於:2025年10月24日
使用 GPT-5 Thinking 回答 Chat01
創建於:2025年10月24日
使用 GPT-5 Thinking 回答 Chat01
Сетевая аномалия
Рекомендуемые утилиты: Wireshark
Файл: traffic 9 4.pcapng
Товарищ, в наших информационных сетях обнаружена аномалия. Кажется, кто-то атакует внутренние сервисы. Требуется срочное расследование и анализ ситуации. Исследуйте запись трафика и опишите атаку.
Какой тип атаки был применён?
Выбрать
Определите IP-адрес атакующего.
Ответ
Какой программой, вероятно, пользовался атакующий для доступа к сайту? В ответ запишите только название, без версии.
Ответ
pythondef list_dir(path): try: return sorted(os.listdir(path)) except Exception as e: return str(e) print("cwd:", os.getcwd()) print("/mnt/data:", list_dir("/mnt/data"))
pythonprint(list_dir("."))
pythonimport os pcap_files = [] for root, dirs, files in os.walk('/', topdown=True): # skip huge directories for speed if root.startswith(('/proc','/sys','/dev','/usr','/lib','/bin','/sbin','/etc','/var','/opt')): continue for f in files: if f.lower().endswith(('.pcap', '.pcapng')): pcap_files.append(os.path.join(root, f)) len(pcap_files), pcap_files[:10] (0, [])
Похоже, файл traffic 9 4.pcapng ещё не прикреплён — без него я не смогу разобраться в трафике и назвать точные ответы. Пожалуйста, загрузите pcap/pcapng, и я сразу разберу следующее:
Сигналы по шаблонам (используйте как «чек-лист»; что найдёте — и будет типом атаки):
' or 1=1 --, union select, %27, %3D%27, в URI/параметрах.http.request и затем в Find: (?i)(union|or 1=1|select|sleep\()frame contains "union select" / frame matches "(?i)or 1=1"POST на /login, /wp-login.php, /admin с разными логинами/паролями, много 401/403.http.request.method == "POST" && (http.request.uri contains "login" || http.request.uri contains "wp-login");http.response.code in {401,403}GET на несуществующие пути (/admin/, /backup.zip, /phpmyadmin, и т.п.), много 404.http.request && http.response.code == 404../ в путях.http.request.uri contains "../"SYN без установления сессий.tcp.flags.syn == 1 && tcp.flags.ack == 0 (посмотрите «Statistics → Conversations (TCP)»)SYN с одного IP, много ретрансмиссий:tcp.flags.syn == 1 && tcp.flags.ack == 0 + «Statistics → IO Graphs»http.request → добавьте колонку ip.src → Sort Desc по Count.http.response.code in {401,403,404,500} и посмотрите, какой ip.src чаще всего их вызывает.tcp.flags.syn == 1 && tcp.flags.ack == 0 и в колонке ip.src — топ-говорящий адрес и будет атакующим.Смотрите поле User-Agent:
sqlmap → (SQL-инъекции)Nikto → (сканер уязвимостей веба)DirBuster, gobuster, wfuzz → (брут-форс директорий/URL)wpscan → (сканер WordPress)curl/wget (будет явно в User-Agent).http.user_agent matches "(?i)(sqlmap|nikto|dirbuster|gobuster|wfuzz|wpscan|curl|wget)".Готов разобрать ваш pcap и выдать точные ответы на три вопроса («Тип атаки», «IP атакующего», «Название программы») — просто загрузите файл traffic 9 4.pcapng.
pythonfrom scapy.all import rdpcap, TCP, UDP, IP, IPv6, Raw, HTTP, HTTPRequest, HTTPResponse
pythonimport dpkt, socket, struct, datetime, io, sys
pythonimport struct, ipaddress, re path = "/mnt/data/traffic_9_4.pcapng" data = open(path, "rb").read() offset = 0 endian = "<" # default little endian packets = [] def read_u32(off, endian): return struct.unpack(endian+"I", data[off:off+4])[0] # Parse blocks while offset + 12 <= len(data): block_type = read_u32(offset, endian) # initial guess little-endian for SHB block_total_len = read_u32(offset+4, endian) if block_total_len < 12 or offset + block_total_len > len(data): # Try switching endianness for first block if section header # Read SHB magic # To handle initial unknown endian: # We'll check byte-order magic at offset+8 with both (53, 4, {'192.168.122.20': 3, '192.168.122.103': 1}, {'192.168.122.20': 3, '192.168.122.103': 1})
pythonfor i,(src,dst,sport,dport,text) in enumerate(parsed["http_requests"],1): print(f"--- HTTP req #{i} from {src}:{sport} to {dst}:{dport} ---") print(text.split("\r\n\r\n")[0]) print()
Готово. В pcap видно HTTP-запрос с инъекцией:
GET /get_secret?username='%20OR%201=1--&password= (User-Agent: curl).
Тип атаки: SQL-инъекция
IP атакующего: 192.168.122.103
Программа: curl
(Дополнительно в трaces есть подбор пароля с 192.168.122.20 на /get_secret, но инъекция идёт именно с .103.)