
Скрипт на Python2 для сканирования сети с целью обнаружения систем Windows, скомпрометированных с помощью импланта DOUBLEPULSAR.
Автор: Luke Jennings ([email protected] - @jukelennings)
Компания: Countercept (@countercept)
Веб-сайт: https://countercept.com
Набор скриптов на Python2 для сканирования списка IP-адресов на наличие как SMB-, так и RDP-версий импланта DOUBLEPULSAR, выпущенного Shadow Brokers. Поддерживается как проверка одного IP, так и списка IP-адресов в файле с поддержкой многопоточности. SMB-версия также поддерживает удалённое удаление импланта для восстановления системы, чему способствовало знание механизма опкодов, восстановленного @zerosum0x0.
Это ранний релиз, выпущенный в интересах предоставления возможности обнаружить компрометации в своей сети, теперь, когда эти эксплойты стали общедоступны и, несомненно, используются для атак на организации. Он повторно реализует команду ping импланта, которая может использоваться удалённо без аутентификации, чтобы определить, заражена ли система. Поддерживаются как SMB-, так и RDP-версии импланта.
Не все версии ОС были протестированы, и некоторые в настоящее время не работают. Например, Windows Server 2012 отвергает SMB-последовательность с ошибкой ACCESS_DENIED. Однако эта система не уязвима для эксплойта ETERNALBLUE, и имплант DOUBLEPULSAR получает ту же ошибку при попытке пинга цели. Таким образом, возможно, что ошибки на некоторых версиях Windows могут указывать на то, что система не скомпрометирована.
root@kali:~# python detect_doublepulsar_smb.py --ip 192.168.175.128
[-] [192.168.175.128] No presence of DOUBLEPULSAR SMB implant
root@kali:~# python detect_doublepulsar_smb.py --ip 192.168.175.128
[+] [192.168.175.128] DOUBLEPULSAR SMB IMPLANT DETECTED!!!
root@kali:~# python detect_doublepulsar_rdp.py --file ips.list --verbose --threads 1
[*] [192.168.175.141] Sending negotiation request
[*] [192.168.175.141] Server explicitly refused SSL, reconnecting
[*] [192.168.175.141] Sending non-ssl negotiation request
[*] [192.168.175.141] Sending ping packet
[-] [192.168.175.141] No presence of DOUBLEPULSAR RDP implant
[*] [192.168.175.143] Sending negotiation request
[*] [192.168.175.143] Server chose to use SSL - negotiating SSL connection
[*] [192.168.175.143] Sending SSL client data
[*] [192.168.175.143] Sending ping packet
[-] [192.168.175.143] No presence of DOUBLEPULSAR RDP implant
[*] [192.168.175.142] Sending negotiation request
[*] [192.168.175.142] Sending client data
[*] [192.168.175.142] Sending ping packet
[+] [192.168.175.142] DOUBLEPULSAR RDP IMPLANT DETECTED!!!
root@kali:~# python2 detect_doublepulsar_smb.py --ip 192.168.175.136 --uninstall
[+] [192.168.175.136] DOUBLEPULSAR SMB IMPLANT DETECTED!!! XOR Key: 0x7c3bf3c1
[+] [192.168.175.136] DOUBLEPULSAR uninstall successful
# target network (adapt this to your network)
NETWORKRANGE=192.168.33.0/24
# install the required scanning tools
brew install masscan || apt-get install masscan
git clone https://github.com/countercept/doublepulsar-detection-script.git
cd doublepulsar-detection-script
# scan open ports
masscan -p445 $NETWORKRANGE > smb.lst
masscan -p3389 $NETWORKRANGE > rdp.lst
# clean the list of IPs
sed -i "s/^.* on //" smb.lst
sed -i "s/^.* on //" rdp.lst
# check vulnerabilities on the hosts who have the service open
python detect_doublepulsar_smb.py --file smb.lst
python detect_doublepulsar_rdp.py --file rdp.lst
# Or, if you have the python netaddr library
python detect_doublepulsar_smb.py --net 192.168.0.1/24
Этот репозиторий также содержит три сигнатуры Snort, которые можно использовать для обнаружения применения нереализованной команды Trans2 SESSION_SETUP, используемой утилитой ping по SMB, и различных ответных случаев. Хотя мы не одобряем полагаться на сигнатуры для эффективного обнаружения атак из-за того, насколько легко их обойти, эти правила являются высокоспецифичными и должны обеспечить некоторую возможность обнаружения новых групп угроз, которые используют эти эксплойты и импланты без модификации.