Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.
я виделизпотокТип анализаиз Краткое содержание вопроса:
1. Информация о сообщении Ping (протокол ICMP)
2. Загрузка/скачивание файлов (Bluetooth obex, http, сложная: сегментированная загрузка/скачивание файлов)
3. Атака с помощью SQL-инъекций
4. Посетите специальный веб-сайт шифрования и дешифрования (md5, base64).
5. Фоновое сканирование + взлом слабого пароля + кухонный нож.
6. Анализ USB-трафика
7. Взлом пароля беспроводной сети Wi-Fi
8. Понять специфическое поведение хакеров на основе набора пакетов трафика.
Пример 1.1
Откройте пакет трафика и обнаружите большой раздел пакета протокола icmp. Я обнаружил, что пакет icmp перемешан с флагом.
Здесь вы можете просмотреть данные каждого icmp-сообщения по очереди, а затем получить флаг
Вы также можете использовать обработку скриптов: (не рекомендуется)
Сначала отфильтруйте пакеты протокола icmp > Экспортируйте определенные группы > Сохранить как flag.pcapng > Затем используйте скрипт для обработки:
(Этот скрипт может обрабатывать только пакеты только с одним байтом данных, что очень ограничено. Лучше проверять каждый пакет по отдельности. Флаг в любом случае не будет слишком длинным)
import pyshark
cap = pyshark.FileCapture('flag.pcapng')
for packet in cap:
data = ''+packet[packet.highest_layer].data
print(chr(int(data,16)),end='')
cap.close()
Этот тип трафика, смешанного с файлами, обрабатывается лучше всего.
Способ первый,Непосредственно использовать в первую очередь напрямую отделить и упомянуть Выбрать, и вы можете упомянуть Выбрать его серединаскрыть документ в один клик,Обычно один из них отделяется напрямую: Варианты сжатого пакета, изображения или flag.txt.
Способ второй,
Автоматически извлекать содержимое файлов, переданных по http документ->Экспортировать объект->HTTP
существовать Открытьизсписок объектовсерединаоказатьсяценныйценитьиздокумент,Например, сжатие документа, текстового документа, аудиодокумента, изображений и т. д.,НажмитеSave
сохранять,илиSave All
Сохраните все объекты перед входомдокументклип для анализа。
Вручную извлечь содержимое файла, переданного через http
выбраноhttpдокументпередача инфекциипоток Сумка,существовать Детали группысерединаоказатьсяdata
,Line-based text
, JPEG File Interchange Format
, data:text/html
слой,мышь右键Нажмите – выбрано Экспортируйте пакетированный поток байтов.
Если это файл загрузки с помощью чоппера, вам необходимо удалить символы X@Y в начале и конце сгруппированного потока байтов, иначе загруженный файл будет неправильным. щелчок правой кнопкой мыши – выбрано Показать сгруппированные байты
Задайте начальный и конечный байты во всплывающем окне (прибавьте 3 к исходному количеству байтов в начале и вычтите 3 в конце)
最назад НажмитеSave as
кнопка экспорта。
Пример 2.1 Мобильная точка доступа (протокол передачи Bluetooth obex, извлечение данных)
Источник вопроса: Geek Challenge, 7 сезон. Тестовые точки: протокол передачи Bluetooth obex, извлечение данных Информация о вопросе: (Blatand_1.pcapng)
В вопросе написано, что он используется.Он не блуждающий.Я передал файлы на компьютер.Он должен быть через Bluetooth.Протокол obex.
Шуай выбрал пакет протокола obex: Я обнаружил, что в пакете есть сжатый rar пакет:
Чтобы отделить этот RAR-пакет:
Способ 1: напрямую скопируйте блок данных, затем скопируйте его в winhex и сохраните как rar.
копировать блок данных as Hex stream > вставить в винхекс для ASCII HEX > Удалить предыдущий избыточная информация > держатьдля rar
Способ 2. Используйте formost для разделения: многие вещи разделены, но наша цель — пакет rar.
Получите flag.git:
Пример 2.2. Ловля мухи
Этот вопрос более сложного типа. Он предполагает сегментированную передачу файлов. Нам нужно объединить несколько фрагментов данных.
Сначала найдите строковый флаг в потоке байтов пакета, чтобы найти первый пакет, и проследите поток данных.
Затем я увидел приведенную выше информацию и понял, что мне следует использовать почтовый ящик qq для передачи файлов.
Информация о файле: fly.rar документизразмердля 525701
{“path”:”fly.rar”,”appid”:””,”size”:525701,”md5″:”e023afa4f6579db5becda8fe7861c2d3″,”sha”:”ecccba7aea1d482684374b22e2e7abad2ba86749″,”sha3″:””}
Теперь, когда вы знаете, что загружаете файлы, вы должны использовать метод POST HTTP-запроса.
Войти в фильтр
http && http.request.method==POST
Затем найдите эти 5 пакетов, первый пакет документизинформация,позже5индивидуальный Сумкадляданные
Проверьте длину даты соответственно:
первые четыре для 131436 Последний для 17777
Итак, 131436*4 +17777=527571 на 1820 отличается от длины Fly.rar, указанной в первом пакете 525701.
Поскольку каждый для содержит информацию заголовка, 1820/5 = 364.
информация заголовка soeach Сумкаиз для 364
Затем экспортируйте пакет данных:
wireshark->документ->Экспортировать объект->http->выбиратьsaveобъект
Будет ли соответствующий пакет сохранить соответственно для 1 2 3 4 5
Перетащите эти пять пакетов в Кали.
осуществлять:
dd if=1 bs=1 skip=364 of=11
dd if=2 bs=1 skip=364 of=22
dd if=3 bs=1 skip=364 of=33
dd if=4 bs=1 skip=364 of=44
dd if=5 bs=1 skip=364 of=55
Удалим 364 байта из заголовка пакета данных и получим 11 22 33 44 55
Объедините эти пять пакетов
cat 11 22 33 44 55 > fly.rar
Проверьте правильность значения md5 в flag.rar.
md5sum fly.rar
правильный
При распаковке появляется сообщение о том, что заголовок файла поврежден и требуется пароль.
Зная, что это псевдопароль, откройте его с помощью winhex, измените заголовок файла и измените 84 изменятьдля 80,Сохранить
После распаковки откройте flag.txt и откройте кучу искаженных символов. Используйте в первую очередь, чтобы разделить их и получить много картинок.
Нашел QR-код и получил флаг после его сканирования.
flag{m1Sc_oxO2_Fly}
На самом деле я сначала этого не делал, я сначала сразу отделил пакет трафика, потом отделил несколько картинок и сжатый пакет и попробовал его распаковать.
Выскакивает куча ошибок и просит ввести пароль. заголовок файла 84 Изменитьдля 80 После этого все равно не могу открыть ,,может быть Этот файл также содержит другие сообщения об ошибках, поэтому вместо этого используйте описанный выше метод.
Пример 3.1. Извлечение информации (сверхподробное)
Я столкнулся с почти таким же вопросом на конкурсе. Я никогда не писал подробного блога. Сегодня я решил использовать этот вопрос, чтобы записать и понять вопрос такого типа.
Совет: sqlmap
Открыв пакет трафика, я также заметил, что процесс слепой SQL-инъекции выполнялся с помощью sqlmap, методом дихотомии.
длялучшеиз理解 процесс инъекции Мы сначала положили Извлеките оператор инъекции для удобства наблюдения.
фильтровать HTTP-трафик ,Затем документ 》Экспорт результатов группового анализа 》дляCSV держатьдля 123.txt
Откройте 123.txt с помощью Notepad++, вы увидите, что в операторах все еще смешано много URL-кодов.
Выбрать все , Затем плагин 》MIME Tools 》 url decode , чтобы было более интуитивно понятно конвертировать URL-код в дляиз ascii
Затем Снова понять дихотомия Процесс слепой SQL-инъекции
с флагом изпервый персонаждля пример :
Число в зеленом поле указывает, какой персонаж тестируется.
Число в красном поле представляет значение по сравнению со значением ASCII текущего тестируемого символа.
Числа в розовой рамке высоты возвращает длину данных (на основе этого мы будем судить, правильно ли приведенное выше утверждение да)
ascii имеет 128 так от 64 Начни судить,Затемда96(64и128среднее значение),иллюстрировать>64даправильныйиз ,Только тогда Выбирать96,Затемда 80,80 меньше 96,иллюстрировать>96это неправильно,так Только тогда Выбирать 64 и 96 среднее значение 80,Затемда 72,иллюстрировать>80это неправильно,Выбирать80и64междусреднее значение72,Затемда76,иллюстрировать>72даправильныйиз,Только тогда Выбирать 72 и80междусреднее значение76,Затемда 74,иллюстрировать>76это неправильно,Только тогда Выбирать 72 и76среднее значение 74,Затемда73,иллюстрировать>74это неправильно,Только тогда Выбирать 72 и 74среднее значение 73
Что касается > 73 заявлениеданетправильный,Это о нас в конце концов из Выбратьценить,
мы уже знаем первый персонаж значение ascii диапазон для 72< x <= 74, Что касаетсяда 73 все еще 74 , необходимо вынести еще одно суждение:
нравиться > 73 правильный, но x = 74 первый персонаж значение asciiдля 74 то есть J
нравиться >73 Ошибка, но x = 73 то есть I
Поскольку мы уже знаем выше >64 даправильныйиз Длина данных возвращаемого пакета равна 467
>96 это неправильно Длина данных возвращаемого пакета равна 430
>80 это неправильно Длина данных возвращаемого пакета равна 430
>72 даправильныйиз Длина данных возвращаемого пакета равна 467
>76 это неправильно Длина данных возвращаемого пакета равна 430
>74 это неправильно Длина данных возвращаемого пакета равна 430
можно увидеть При оценке предложения правильно , длина данных возвращенного пакета да больше, чем 430-е , когда возникает ошибка даменьше или равно 430
Затемсм. последнее заявление >73 возвращаемое значение для 430, объяснение и ошибка, первый персонажизascii для 73
Как только вы поймете процесс, сделать это будет намного проще.
нам просто нужно оказаться текущего тестового персонажа Последнее тестовое утверждение значение ascii и возвращаемое значение
есливозвращаемое значениебольше, чем 430 но текущего тестового персонажаascii ценить для Значение последнего тестового оператора ascii
есливозвращаемое значение меньше или равно 430 но текущий тестхарактерзначение ascii для ascii последнего тестового оператора + 1
Способ 1: (когда флаг короче)
когда флаг короче по времени, мы уверены даиспользовать ручную работу Запишите их один за другим 每индивидуальныйхарактерзначение ascii относительно быстро
Способ 2: (когда флаг длиннее)
когда флаг для Когда количество слов превышает 25, делать это вручную кажется слишком трудоемким. Лучше написать скрипт, чтобы сделать это быстрее, как и в этом вопросе, длина флага равна. 33
Верхний сценарий:
import re
import urllib.parse
# Изменить под себя из Wireshark Выбрать изcsvадрес документа
f = open(r"123.txt")
lines = f.readlines()
datas = []
# перекодирование, Сохранить в данные
for line in lines:
datas.append(urllib.parse.unquote(line))
lines = [] # Слишком ленив, чтобы измениться, Просто повтори это, эти строки сохранить, внедрить флагизурл
for i in range(len(datas)): # Предоставить Выбирать inject flagizurl
if datas[i].find("isg.flags ORDER BY `value` LIMIT 0,1),1,1))>64") > 0:
lines = datas[i:]
break
flag = {}
# использоватьтольконосоответствовать
macth1 = re.compile(r"LIMIT 0,1\),(\d*?),1\)\)>(\d*?) HTTP/1.1")
macth2 = re.compile(r'"HTTP","(\d*?)","HTTP/1.1 200 OK')
for i in range(0, len(lines), 2): # Поскольку нет ответа от для, такразмер шагадля2 get1 = macth1.search(lines[i])
if get1:
key = int(get1.group(1)) # keyдержатьхарактериз Расположение value = int(get1.group(2)) # значение сохранить характеризационную кодировку
get2 = macth2.search(lines[i + 1])
if get2:
if int(get2.group(1)) > 450:
value += 1
flag[key] = value # использовать字典держатьflag
f.close()
result = ''
for value in flag.values():
result += chr(value)
print(result)
длякакой сценарийсередина суждениевозвращаемое значение Выбирать 450 Шерстяная ткань? потому чтодля При взятии 430 получен неправильный флаг. Внимательно проверив 123.txt, я обнаружил, что. Также возвращены некоторые неправильные утверждения. Сумка для 431 или 432, так что просто выбери один 450 (допустимо любое значение от 433 до 460)
(Если вы все еще этого не понимаете, подумайте о смене специальности)
Получить флаг:
ISG{BLind_SQl_InJEcTi0N_DeTEcTEd}
пример3.2 Аудит журнала
использовать notepad++ Открыть бревнодокумент,Первыйиспользовать плагинв MIME Tool в URL decode Расшифруй это
Затем можно ясно увидеть дасуществовать выполнено sql Операция слепого впрыска,
Дальнейший обзор также возможен посмотреть каждое утверждение возвращатьсяизкод состоянияи знаю ондаииспользоватьиз дихотомиясуществоватьруководить Слепая инъекция SQL
мне нужно сделать что-то естьоказаться каждый тестовый персонаж Последний состояниядля 200 из Заявление в ascii оценить и записать это
примернравиться:
Благодаря makeuseizdadihotomia, мы можем узнать это здесь. флаг из 18 индивидуальныйхарактеризascii для 117+1 ,118
Можно, конечно, и ручным способом, прописывать флаги по одному, если не умеете писать код)
Конечно лучше всего запустить скрипт даиспользовать
Я нашел скрипт:
# coding:utf-8
import re
import urllib
f = open('access.log', 'r')
lines = f.readlines()
datas = []
for line in lines:
t = urllib.unquote(line)
# Отфильтруйте угадывающие решения, связанные с флагом, правильные угадывания, здесь собирайте только правильные угадывания и проверяйте характеристики. = Угадай последнюю коррекцию +1 (Это дадихотомияиз — скрытое правило)
if '200 1765' in t and 'flag' in t:
datas.append(t)
flag_ascii = {}
for data in datas:
matchObj = re.search(r'LIMIT 0,1\),(.*?),1\)\)>(.*?) AND', data)
if matchObj:
key = int(matchObj.group(1))
value = int(matchObj.group(2)) + 1
flag_ascii[key] = value # Используйте словарь и сохраните последнюю догадку о правильном коде.
flag = ''
for value in flag_ascii.values():
flag += chr(value)
print flag
Объяснять:
t = urllib.unquote(line) то есть Воля Текстовая прогрессия urldecode декодирование
if ‘200 1765’ in t and ‘flag’ in t: Если в операторе есть эти две строки, замените оператор напрямую Депозит в данных массива datas.append(t)
matchObj = re.search(r’LIMIT 0,1\),(.*?),1\)\)>(.*?) AND’, data) на свидании Поиск совпадений Позитивное выражение из объединение строк будет соответствовать переменной изнести Депозит matchObj середина
key = int(matchObj.group(1)) Выбирать Переменная matchObj середина из Содержимое в первой скобке из (такжеэто есть КамидзёЗаявление в (.*?)в контенте) и перенос для10база value = int(matchObj.group(2)) + 1 Выбирать Переменная matchObj середина из Содержимое во второй скобке преобразовано в формат для 10 база
Получить флаг: flag{sqlm4p_15_p0werful}
пример4.1: Ты можешь меня пригласить?
Открытьпоток Сумка,существовать Поток байтов пакета середина поиска нить флаг, получаем несколько сумок, но полезной информации нет.использоватьиз
Следующая попытка отфильтровать httpСумка,(Не спрашивайте меня, что мне отфильтровать httpСумка,Опыт подсказывает, что проблема с http, что скорее всего)
В Затем осталось всего 6 Сумок:
Нажмите на первую Сумку, щелкните правой кнопкой мыши Трассировка потока 》http
Затем внимательно изучил эту Сумку и обнаружил base64. посетите доменное имя: http://tool.chinaz.com/Tools/Base64.aspx
Нашел сайт шифрования и дешифрования base64:
Затем Пучок После получения результата зашифрованный текст копируется и расшифровывается дважды. Получил флаг: sdut2019{Traffic_anaлиз_seclab507}
пример5.1,середина Национальный кухонный нож
существовать Поток байтов пакета середина поиска flag нить,оказаться Нет.8 Сумка, трассировка потока данных TCP
Видел это flag.tar.gz,Думаю поток Сумкасередина спрятал молнию Сумка,
Обзор usebinwalk: Обнаружить почтовую сумку,разделение
key{8769fe393f2b998fa6a11afe2bfcd65e}
пример5.2 Взлом паролей
flagдляflag{Вход администратора адрес + Пароль администратора }
Исходный документ не найден,Примерно из процессато есть хакерXianli использовать инструмент фонового сканирования,Сканировал сайт и вход администратора бэкенда.
Затемиспользоватьиспользовать имя пользователя администратора, взлом пароля методом перебора, взлом прошел успешно, Затем в процессе были сделаны некоторые непристойные вещи
Нам нужно получить скан хакера, чтобы из Административный вход из адреса И кстати он взломал админа изпароль
Анализ USB-трафика, Сумма включая поток USB-клавиатуры, поток USB-мыши
клавиатурапотокданныедля 8 байт
мышьпотокданныедля 4 байта (Что именно представляет каждый байт, см. в Baidu)
пример6.1:USB-трафиканализировать
Открытьпоток Сумка: Видите из действительно даUSB-трафик, а разной Сумки нет (если даусбиз Сумка нет, то ее нужно заранее отфильтровать)
Поместите эту сумму в linuxсерединати Выбрать данные:
tshark -r example.pcap -T fields -e usb.capdata > usbdata.txt
Затем Сразуполучать Понятно usbdata.txtдокумент:
См. 8 байт на каждую строку, определите данные и трафик клавиатуры.
Затемиспользовать脚本руководить处理Получить флаг:
normalKeys = {"04": "a", "05": "b", "06": "c", "07": "d", "08": "e", "09": "f", "0a": "g", "0b": "h", "0c": "i",
"0d": "j", "0e": "k", "0f": "l", "10": "m", "11": "n", "12": "o", "13": "p", "14": "q", "15": "r",
"16": "s", "17": "t", "18": "u", "19": "v", "1a": "w", "1b": "x", "1c": "y", "1d": "z", "1e": "1",
"1f": "2", "20": "3", "21": "4", "22": "5", "23": "6", "24": "7", "25": "8", "26": "9", "27": "0",
"28": "<RET>", "29": "<ESC>", "2a": "<DEL>", "2b": "\t", "2c": "<SPACE>", "2d": "-", "2e": "=", "2f": "[",
"30": "]", "31": "\\", "32": "<NON>", "33": ";", "34": "'", "35": "<GA>", "36": ",", "37": ".", "38": "/",
"39": "<CAP>", "3a": "<F1>", "3b": "<F2>", "3c": "<F3>", "3d": "<F4>", "3e": "<F5>", "3f": "<F6>",
"40": "<F7>", "41": "<F8>", "42": "<F9>", "43": "<F10>", "44": "<F11>", "45": "<F12>"}
shiftKeys = {"04": "A", "05": "B", "06": "C", "07": "D", "08": "E", "09": "F", "0a": "G", "0b": "H", "0c": "I",
"0d": "J", "0e": "K", "0f": "L", "10": "M", "11": "N", "12": "O", "13": "P", "14": "Q", "15": "R",
"16": "S", "17": "T", "18": "U", "19": "V", "1a": "W", "1b": "X", "1c": "Y", "1d": "Z", "1e": "!",
"1f": "@", "20": "#", "21": "$", "22": "%", "23": "^", "24": "&", "25": "*", "26": "(", "27": ")",
"28": "<RET>", "29": "<ESC>", "2a": "<DEL>", "2b": "\t", "2c": "<SPACE>", "2d": "_", "2e": "+", "2f": "{",
"30": "}", "31": "|", "32": "<NON>", "33": "\"", "34": ":", "35": "<GA>", "36": "<", "37": ">", "38": "?",
"39": "<CAP>", "3a": "<F1>", "3b": "<F2>", "3c": "<F3>", "3d": "<F4>", "3e": "<F5>", "3f": "<F6>",
"40": "<F7>", "41": "<F8>", "42": "<F9>", "43": "<F10>", "44": "<F11>", "45": "<F12>"}
output = []
keys = open('usbdata.txt')
for line in keys:
try:
if line[0]!='0' or (line[1]!='0' and line[1]!='2') or line[3]!='0' or line[4]!='0' or line[9]!='0' or line[10]!='0' or line[12]!='0' or line[13]!='0' or line[15]!='0' or line[16]!='0' or line[18]!='0' or line[19]!='0' or line[21]!='0' or line[22]!='0' or line[6:8]=="00":
continue
if line[6:8] in normalKeys.keys():
output += [[normalKeys[line[6:8]]],[shiftKeys[line[6:8]]]][line[1]=='2']
else:
output += ['[unknown]']
except:
pass
keys.close()
flag=0
print("".join(output))
for i in range(len(output)):
try:
a=output.index('<DEL>')
del output[a]
del output[a-1]
except:
pass
for i in range(len(output)):
try:
if output[i]=="<CAP>":
flag+=1
output.pop(i)
if flag==2:
flag=0
if flag!=0:
output[i]=output[i].upper()
except:
pass
print ('output :' + "".join(output))
пример6.2 USB-трафик
Открыть обнаружил, что существует большое количество протоколов изusb изпоток Сумка,Но у его середины много разной Сумки,
Обнаружил, что его середина имеет большой раздел да 4 байтаиз данные USB (данные мыши)
Сначала отфильтруй этих мышей потокиз Сумка,
usb.src == “2.3.1” После фильтрации документ 》Экспорт специальной группы 》держатьдля jjj.pcap
Поместите jjj.pcap в linuxсередина:
tshark -r jjj.pcap -T fields -e usb.capdata > usbdata.txt
Создайте документ usbdata.txt, затем преобразуйте данные потока мыши usbdata.txtв в координаты.
nums = []
keys = open('usbdata.txt','r')
file = open('xy.txt','w')
posx = 0
posy = 0
for line in keys:
if len(line) != 12 :
continue
x = int(line[3:5],16)
y = int(line[6:8],16)
if x > 127 :
x -= 256
if y > 127 :
y -= 256
posx += x
posy += y
btn_flag = int(line[0:2],16) # 1 for left , 2 for right , 0 for nothing
if btn_flag == 1 :
string = str(posx) + ' '+str(posy) +'\n'
file.write(string)
keys.close()
file.close()
Сгенерированный документ xy.txt:
Затемсуществоватьlinuxсередина осуществлять
gnuplot
>plot "xy.txt"
Просто нарисуйте картинку мышкой:
пример7.1 Тема: Если вы хотите пользоваться Интернетом, сначала разблокируйте пароль (взлом пароля беспроводной сети)
Источник вопроса: bugku Тестовая точка: взлом пароля беспроводной сети Информация о вопросе: (wifi.cap)
wifi Аутентификация соединения изфокуссуществовать В WAPиз Четырехсторонний процесс рукопожатия,то есть EAPOL Соглашение из Сумка,
житьсуществовать Процесс рукопожатия: взрыв напрямую:
Первыйиспользовать linuxв crunch Создайте словарь:
Затем использовать aircrack-ng Чтобы взорвать:
Получить пароль Wi-Fi: 13910407686.
ссылка:https://jwt1399.top/2019/07/29/ctf-liu-liang-fen-xi-zong-jie/(хочу нижепример Цзыюаньдокументиз Иди и посмотри)
пример8.1 (1.pcap)
Соревнования по триатлону информационной безопасности 2018 г.
Открытьпоток Сумка,поток Сумка немного великовата,Открыть медленнее,这里我们ПервыйфильтрдляHTTPпротоколможно увидеть202.1.1.2
верно192.168.1.8
руководить Понятно疯狂извзрывные работы
Нетрудно заметить, что хакервыгодаиспользоватьизSqlMapсуществовать постоянно внедряет SQL-тест на целевой сайт.
потому что此受害主机изсетевая картаIPадресдля192.168.1.8
Введенные параметры также можно четко увидеть.,дляlist[select]
отслеживать http-поток,По эхо-контенту,База данных целевого сайта выдает ошибку,Можно ясно видеть
Не сложно определить,целевой сайтизданные库表名前缀дляajtuc_
Затем он определил имя базы данных хост-сайта жертвы и выполнил еще одну фильтрацию.
(ip.addr == 192.168.1.8 || ip.addr == 202.1.1.2) && http
В это время выберите последнее внедрение полезной нагрузки для декодирования URL.
Можно ясно видеть
FROM joomla.ajtuc_users
потому что此данные库名дляjoomla
Итак, ответ:
1. хакератака на IP-адрес хоста первой жертвы, сетевой карты.
192.168.1.8
2.хакер реализовал SQL-инъекцию по какому параметру URLиз
list[select]
3. База данных веб-сайта первой жертвы с префиксом таблицы (плюс подчеркивание, например abc_)
ajtuc_
4. Имя базы данных хост-сайта первой жертвы.
joomla
пример8.2(2.pcap)
Источник вопроса:Соревнования по триатлону информационной безопасности 2018 г.
В соответствии с целевым IP-адресом, определенным в вопросе 1, так по-прежнему использует следующую фильтрацию для упрощения работы.
(ip.addr == 192.168.1.8 || ip.addr == 202.1.1.2) && http
можно увидеть一индивидуальный奇怪документkkkaaa.php
,Последующий просмотр данных POST
Нетрудно найти дасередина национальный кухонный нож и зпоток.,Троянский парольдляzzz
Затем определите момент, когда хакер второй раз загрузит php-трояна.
Я отфильтровал и догадался, что хакер должен загрузить второго трояна на основе первого.
(ip.addr == 192.168.1.8 || ip.addr == 202.1.1.2) && http.request.method==POST
В это время фрагмент данных особенно привлекателен.
Анализируем свою 16базу
Поместите сохранение изценить в исходный код winhexсерединаполучить
Сохраните документ в дляphp, но код да был запутан и в конец кода существования добавлены следующие две строки кода
var_dump($j);
var_dump($x);
Запустите php для деобфускации и найдите этот самый троян.
Это подтверждает, что эта привлекающая внимание из Сумка загрузила второго трояна
потому что此上传час间для:17:20:44.248365
все ещеделатьиспользоватьфильтр
(ip.addr == 192.168.1.8 || ip.addr == 202.1.1.2) && http
Затем можно увидеть много запросов на странице footer.phpiz, нажмите на одну из них, чтобы просмотреть подробности.
Легко обнаружить, что данные реферера очень подозрительны.,И ACCEPT_LANGUAGE более нормальный, чем для
так в принципе можно определить,Троян прошелHTTPпротоколвReferer
头传递данные
Отвечать
1.хакер Нет.一次获得изphpТроянский коньизпарольда Что
zzz
2. Когда хакер загрузил php-троян да во второй раз?
17:20:44.248365
3. При второй загрузке троянец передает данные по протоколу HTTP.
Referer
пример.8.3(3.pcap)
Источник вопроса:Соревнования по триатлону информационной безопасности 2018 г.
Фильтровать напрямую
tcp contains "mysql" && mysql
получать много данных,Выяснилось, что хакер существует должен взорвать вход в Mysqliz.,Машина-жертва интрасети для 192.168.2.20
Наши последние данные для входа
На этот раз нам нужен хеш пароля MySQL.
Просто отфильтруйте это
(ip.addr == 192.168.1.8 || ip.addr == 202.1.1.2) && http
Целевая машина была смонтирована натуннеле.php.,Удобный доступ из внешней сети во внутреннюю сеть для Удобно просматривать работу хакера,Фильтруем POST запросы
(ip.addr == 192.168.1.8 || ip.addr == 202.1.1.2) && http.request.method==POST && http
Мы хорошо видим, что при первом использовании хакеризphp прокси он сначала подключается к 4.2.2.2этот тип, а порт для53.
Отвечать
1.Хост интрасетиизmysqlиспользовать Имя учетной записиизапросить соединениеизпарольhashда Сколько(использоватьсемья:парольhash)
admin:1a3068c3e29e03e3bcfdba6f8669ad23349dc6c4
2.Когда php-прокси используется впервые, к какому IP-адресу подключается первым?
4.2.2.2
пример8.4(4.pcap)
Источник вопроса:Соревнования по триатлону информационной безопасности 2018 г.
дляOK хакер При первом получении Выбрать в текущий каталог список документов из использования эксплойта Когда запрос существует, продолжаем фильтрацию
(ip.addr == 192.168.1.8 || ip.addr == 202.1.1.2) && (http contains "dir" || http contains "ls")
В это время для ls,реж.,Давайте сначала проверим lsiz отследить его поток TCP
Выяснилось, что исследование не увенчалось успехом, после чего сверили реж.
Ю да можешь быть уверен, что это правильно,Целевая система для Windows,в то же времяdirЗаказосуществлять成功
час间для:18:37:38.482420
Поскольку это должно192.168.2.20из Машина можетосуществлять Заказ,Юда, меняю метод фильтрации,Посмотрите, как хакеры атакуют
ip.addr == 192.168.2.20 && http
можно увидеть Вышеупомянутые машины-жертвы разные, изучить dir , pwd, dir и echo%20… и другие команды
Не сложно найти,Команда хакервыгодаиспользоватьecho записывает бэкдор с именем дляsh.phpiz.
Затем прокрутите вниз, чтобы увидеть бэкдор-пост «Хакервыгодаиспользоватьэтот» Понятно一些东西,Думаю, это должен быть троянский документ,Взгляните:
Действительно,Троянский пароль да123,дасередина национальный кухонный нож изпоток
Далее выполняем инструкцию хакеросуществлятьиз.,Со времен дасередина национальный кухонный нож поток,Мы выбираем отображение обычного текста на основе ответа.,Угадай команду,Это более эффективно
ip.src == 192.168.2.20 && http
существовать18:50:09.344660час,Нашли подозрительные операции, нашли фрагмент подозрительных данных,суждениехакердолжендаосуществлять Понятноnet user
из Заказ
Потом 18:50:42.908737 снова обнаружил хакера и снова команда net user Для просмотра в это время:
Похоже, хакер успешно добавил учетную запись администратора, используя кака Определив приблизительное время совершения преступления, мы можем использовать использовать для фильтрации
Определив приблизительное время совершения преступления, мы можем использовать использовать для фильтрации
ip.addr == 192.168.2.20 && http
Суждение, основанное на предыдущем опыте,мы можем знать 18:49:27.767754 часа,不житьсуществоватьkakaиспользоватьсемья
В 18:50:42.908737 как стал администратором для использования так можно определить время существования преступления в пределах этого периода
существовать В этот период,Всего 4 POST-запроса.,Давайте проверим один за другим,Как и ожидалось,существованияя обнаружил проблему в первом POSTсередина
Y2QvZCJDOlxwaHBTdHVkeVxXV1dcYjJldm9sdXRpb25caW5zdGFsbFx0ZXN0XCImbmV0IHVzZXIg
a2FrYSBrYWthIC9hZGQmZWNobyBbU10mY2QmZWNobyBbRV0=
декодированиеназад
cd/d"C:\phpStudy\WWW\b2evolution\install\test\"&net user kaka kaka /add&echo [S]&cd&echo [E]
можно ясно увидеть
net user kaka kaka /add
Это можно сделать вывод из да,использовать Имя учетной записиипароль均дляkaka
最назад一题既然даскачать,Стоит ли давыгодаиспользоватьсередина национальный кухонный нож скачать,Дальше отфильтровываем только постпоток,Просто проверьте команду
ip.dst == 192.168.2.20 && http.request.method==POST
На данный момент наши существующие данные Сумкаиз наконец нашли следующие данные
Мы займемся декодированием
Нашел procdump.exe, который делает использование Также обнаружен документ
декодированиеполучать
Наконец-то мы можем быть уверены,хакерскачать Понятноlsass.exe_180208_185247.dmp
документ
Отвечать
1. Когда произошел первый запрос на получение Выбрать текущий каталог издокумента с использованием эксплойта?
18:37:38.482420
2. Каковы имя пользователя и пароль для узла интрасети середина?
kaka:kaka
3.хакер, скачанный с интранет-сервера серединаиздокумента, название
lsass.exe_180208_185247.dmp
Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/133606.html Исходная ссылка: https://javaforall.cn