Ir para conteúdo

Sh3rl0ck

Membros
  • Total de itens

    5
  • Registro em

  • Última visita

Reputação

1 Neutral

Sobre Sh3rl0ck

Últimos Visitantes

65 visualizações
  1. DGA - Domain Generation Algorithm

    O DGA (Domain Generation Algorithm) é um algoritmo que tem como objetivo gerar domínios pseudo aleatórios, podendo fazer a variação tanto somente no nome do domínio e mantendo o Top Level Domain (.<domínio_gerado>.com) ou gerar variação de ambos os dois (<domínio_gerado>.<tld_gerado>). Em alguns casos não se utiliza um algoritmos de geração de string de forma pseudo aleatória e sim busca de uma word list online na Internet. Este algorítimo é muito utilizado em malwares de vários tipos como worm, ransomware, botnets (que não são exatamente malware), dentre outros. Dentre os vários malwares que o utilizam pode-se citar o CryptoLocker e Zeus Trojan. A saída desse algoritmo é utilizado para o comando e controle do malware, sendo que a estratégia aqui é que nem todos os domínios gerados vão funcionar, geralmente apenas um ou um pouco mais que isso vão ser domínios válidos para o comando e controle, além do fato de que mesmo esses domínios validos estarão sempre online, pois geralmente o atacante só necessita que eles fiquem ativos por um breve período de tempo em alguns casos. Existe várias vantagem para o atacante em trabalhar desta forma: Quem for analisar o malware de forma estática e realizar uma varredura por strings, não irá localizar as urls, pois somente serão criadas em tempo de execução; Se um antivírus for realizar uma varredura no arquivo de forma estática, ele não vai identificar as urls e como alguns focam nessa etapa em verificar se tem urls maliciosas conhecidas se baseando em uma black list, o mesmo não irá identificar já que não foi gerado; Dará um enorme trabalho para equipe de defesa identificar qual é a verdadeira, por exemplo, o algoritmo gera 50,000 domínios por dia e apenas 1 é o verdadeiro. Em alguns casos é importante descobrir a URL, tanto para achar a origem como em casos de necessitar bloquear ou registrar o domínio, que nem o caso do WannaCry, se ele usa-se esse algorítimo, teria se levado um tempo muito maior para parar o ataque; Pode ocorrer de se conseguir identificar o verdadeiro link analisando o trafego da rede, o que nem todos fazem, mas em um caso atípico se o atacante precisa apenas receber uma informação e usar UDP, isso dificultará bastante a identificação, ainda mais se o servidor ficar ativo por um breve período receber a informação e ficar offline novamente. É importante ter em mente o funcionamento desse algorítimos, pois as vezes passamos por ele em uma RE de um malware, vemos esse comportamento estranho e pode-se acabar passando despercebido, pois vendo isso sem entender o porquê tende-se a ignorar e seguir em frente, além disso esse método vem sendo disseminado entre os criadores de malware e a equipe de defesa deve estar igualmente alinhada sobre estar técnicas. Um exemplo em Python retirado do Ransomware CryptoLocker: def generate_domain(year, month, day): """Generates a domain name for the given date.""" domain = "" for i in range(16): year = ((year ^ 8 * year) >> 11) ^ ((year & 0xFFFFFFF0) << 17) month = ((month ^ 4 * month) >> 25) ^ 16 * (month & 0xFFFFFFF8) day = ((day ^ (day << 13)) >> 19) ^ ((day & 0xFFFFFFFE) << 12) domain += chr(((year ^ month ^ day) % 25) + 97) return domain
  2. Links com HXXP ao invés de HTTP

    Nessa refatoração removi do tópico que se põe no <a href ... > e sim colocado puro no html como um texto qualquer, forçando o usuário a ter que copiar o link e colar no campo de url do navegador para poder acessar, no chrome e IE, eles modificam o hxxp para http, já o firefox interpreta de forma literal e não modificar o hxxp. Se usar as tags a, link e um javascript com window.location.href = "hxxp://www.google.com" de fato nenhum navegador que testei reconhece, somente se por direto na url no navegador manualmente.
  3. Links com HXXP ao invés de HTTP

    Desculpa eu tinha me equivocado, já realizei o acerto do tópico e testei.
  4. Links com HXXP ao invés de HTTP

    Em uma análise de uma página que me solicitaram, tinham links que começavam com hxxp ao invés de http e decidi investigar mais a fundo e descobri o motivo de se utilizar isto. Alguns recursos na web detectam link por vários motivos, seja para escanear, remover o link, criar formatação diferenciada, dentre outros que incluem principalmente tratamentos de segurança, mas a maioria leva em consideração que um link deva começar com http ou https (ou algumas variações dependendo do sistema) e por não seguir a regra o sistema não o identifica e não passa pelas tratativas do sistema. Um link incorreto também não é interpretado pelo browser e então não aparece como link e nem seria possível clicar, mas isso é feito de forma proposital, pois o usuário vai tentar clicar e não vai conseguir, então o mesmo se sente na obrigação de copiar e colar no endereço de URL do browser, neste momento no caso dos navegadores IE e Google Chrome substitui hxxp por http, que é uma url válida e assim jogar o usuário para o link verdadeiro, que geralmente é um site malicioso, ou seja, ele bypassava pelos sistemas de detecção dos sites, anti-spam, analisadores de url e outras ferramentas e quando o usuário cola na url é que o atacante atinge seu objetivo enganando o usuário e os sistemas de defesa no meio. Vi esta técnica ser usada para: Bypassar essas ferramentas citadas acima de anti-spam, antivirus, web crawlers internos do sistema e analisadores de url; Passar por proteções de sites como, por exemplo, um site que é proibido postar conteúdos com links externos ou que todo link é verificado quando passa pelo PHP no back-end, esse link não seria percebido pelo PHP e apareceria na postagem normalmente, podendo ser por exemplo um link malicioso.
  5. O que é? A engenharia reversa, também conhecido com reverse engineering ou RE. O conceito nasceu no mundo real, quando precisávamos saber como algo funciona ou como foi construído, quando não tínhamos uma documentação ou conhecimento disso. Um grande exemplo disso tratasse do ambiente competitivo das indústrias, onde uma empresa x lançava um produto novo com mercado com um bom diferencial, principalmente com algo inovador deixando seu concorrentes para trás, mas um ou mais concorrente para não ter tanta perde financeira ou de imagem, pegava este novo produto e começava a tentar descobrir como ele funcionava de várias formas, uma delas poderia ser desmontando e analisando cada parte do produto e de que material era feito, em seguida o mesmo criava um produto similar para competir baseado na engenharia reversa realizada. Na computação a engenharia reversa existe também, tanto de hardware como para software, mas neste caso vamos somente nos referir a engenharia reversa de software, onde temos geralmente o cenário de ter um programa compilado, já em seu formato binário, não temos seu fonte, mas queremos saber como ele foi feito, como funciona e até como altera-lo. É importante destacar que RE não é exclusivo de caso de arquivos em binário, pode ser também de códigos que estão utilizado técnicas de ofuscação, arquivos intermediários de compilação e etc... Por que aprender? A RE é utilizada em várias áreas e situações, seguem alguns exemplos: Crackear um programa; Criar cheats; Proteção de propriedade intelectual do software; Debugar um programa para achar onde está dando erro; ´Criar exploits; Criação de softwares seguros; Bypass em antivírus e firewall; Na computação forense é muito utilizado para analisar malware; Criar proteções contra malwares, inclusive antivirus nada mais é do que uma analise de malware automatizada pro assim dizer; Entender como determinado programa funciona; Utilizado em parte da criação de Rootkits; Além desses fatores podem existir outros, mas dá para ter uma ideia do quão importante é aprender RE. Como aprender? Antes de partir diretamente para os estudos focados em RE, é necessário que tenha as bases bem formadas, caso contrário poderá ficar muito perdido ao ler literaturas que falam do assunto, pois parte do princípio que já conhece assembly e chamadas de sistema. Primeiramente deve-se aprender arquitetura de computadores, onde aprenderá como o computador funciona como, como o hardware e software funcionam juntos e principalmente o ponto mais importante como que funciona a memória RAM e processador, que é o que o assembly interagem bastante. A literatura que indico é: "Organização Estruturada de Computadores" de Andrew S. Tanenbaum. É indicado saber o que é um sistema operacional, pois o assembly interage frequentemente com o mesmo com as chamadas de sistema. Nesse caso deixo 2 literaturas indicadas, basta ler pelo menos uma delas: "Fundamento de Sistemas Operacionais" de Silberschatz, Galbin e Gagne (De fácil leitura) e "Sistemas Operacionais Modernos" de Andrew S. Tanenbaum. O Assembly em si, que é a linguagem que utilizará na engenharia reversa: Para linux "Assembly Language Step-by-Step: Programming with Linux" de Jeff Duntemann e "The Art of Assembly Language, 2nd Edition" de Randall Hyde. Indico aprende mais sobre o Windows como funciona internamente: "Windows Internals, Part 1: System architecture, processes, threads, memory management, and more (7th Edition)" de Pavel Yosifovich , Alex Ionescu , Mark E. Russinovich , David A. Solomon. Finalmente sobre engenharia reversa indico começar pelo "Practical Reverse Engineering: x86, x64, ARM, Windows Kernel, Reversing Tools, and Obfuscation" de Bruce Dang , Alexandre Gazet, Elias Bachaalany, Sébastien Josse. E depois pegar "Reversing: Secrets of Reverse Engineering" de Eldad Eilam Em seguida poderá se aprofundar melhor em outras áreas que utilizam RE.
×