DIA#22-Ethical Hacking Tools (Metasploit- Exploit Development part2)
Continuo hoje, mais uma vez, no tutorial da Offensive Security a apirtir de onde deixei no ultimo dia.
Formatar o Exploit Module
Relativamente ao formato de um exploit module em Metasploit, é semelhante à forma de um módulo auxiliar só que tem mais campos, entre os quais, tem-se sempre um Payload Information Block (uma exploit sem payload é um módulo auxiliar), tem-se uma lista de targets delineada e em vez de se definir run(), exploit() e check() são usados.
Apesar de raramente ser implementado, o método check()deve ser definido nos exploits modules sempre que possível, de modo a, poder verificar todas as opções exceptuando os payloads e determinar se o target é vulnerável. Depois de correr, o check() retorna um check value definido, que pode ser.
- CheckCode::Safe – not exploitable;
- CheckCode::Detected – service detected;
- CheckCode::Appears – vulnerable version;
- CheckCode::Vulnerable – confirmed;
- CheckCode::Unsupported – check is not supported for this module.
Exploit targets
Os exploits definem também uma lista de targets que incluem um nome, um número e opções. A secção das opções pode ser feita basicamente como se quiser, apesar de existirem nomes de opções especiais, como por exemplo "payload" que faz overload da exploits info block. A função das options é guardar target data como por exemplo o return address de um target windows 2000. O acesso ao target object dentro da exploit pode ser feito através de um hash, por exemplo target[‘Payload’][‘BadChars’] e
target[‘opnum’]. De vez em quando é preciso de escolher novos targets, porque um language pack muda os endereços, ou a versão disponível do software é diferente ou os endereços mudaram devido a hooks (lugar no código que permite aceder ao módulo ou para estipular um comportamento diferente ou para reagir ao que aconteceu). Para adicionar um novo target são precisos percorrer três passos:
- Determinar o tipo de return address que é preciso, pode ser um simples "jmp est"(faz jump para o inicio da payload), como fazer jump para um registo especifico ou um ‘pop/pop/ret’. Os comentários nocodigo do exploit podem ajudar a escolher o que é preciso;
- Obter uma copia dos binários do target;
- usar "msfpescan" para localizar um return address adequado.
Exploit Payloads
Quando se está a criar um exploit payload tem que se ter em conta diversos aspectos, como a arquitectura do OS, o anti-virus,etc. Para escapar à detecção dos exploits, quer-se fazer o encode dos payloads para retirar quaisquer badchars, quer-se também usar NOPs para adicionar randomness ao output final.
MSFVenom
Com MSFVenom combinou-se Msfpayload e Msfencode, que eram duas ferramentas bastante uteis para gerar payloads em diferentes formatos e fazer o encoding desses payloads usando diversos modulos de encoding. Pode-se começar a fazer uso desta ferramenta com "msfvenom -h", um exemplo do uso é "msfvenom -a x86 --platform Windows -p windows/shell/bind_tcp -e x86/shikata_ga_nai -b '\x00' -i 3 -f python" em que se pode ver o significado de cada opção com o uso do comando inicial, mas basicamente esta-se a criar um windows bind shell com três iterações de "shikata_ga_nai" encoder, de onde foram tirados os null bytes, o output virá em formato python.
Usar o Egghunter Mixin
Egghunting é uma forma de staged shellcode (quando não se pode injetar muita data no processo target, envia-se um shellcode mais pequeno que ao executar faz dowload de de um shellcode maior e executa-o), onde o attacker pode injetar um shellcode maior, mas não sabe onde o processo vai acabar, então vai-se enviar um egg-hunt shellcode mais pequeno num sitio onde é previsivel que o processo esteja, sendo que esse código irá pesquisar o address space do processo para um shellcode maior (o egg) e executa-o.
PS.
- Para ver exemplos de exploit modules e check() methods recomendo ir a "https://www.offensive-security.com/metasploit-unleashed/exploit-format/".
- Para ver um quantos exemplos de mixins recomendo ir a "https://www.offensive-security.com/metasploit-unleashed/exploit-mixins/".
- Para ver exemplos de target code recomendo ir a "https://www.offensive-security.com/metasploit-unleashed/exploit-targets/".
- Para ver mais sobre os encoders e NOPs usados nos payloads recomendo ir a "https://www.offensive-security.com/metasploit-unleashed/exploit-payloads/".
- Para mais exemplos do uso do MSFVenom recomendo ir a "https://www.offensive-security.com/metasploit-unleashed/msfvenom/" e "https://www.offensive-security.com/metasploit-unleashed/alphanumeric-shellcode/".
- Devido a ter diversas ferramentas um pouco outdated não coloquei grande parte do tutorial da offensive security de Exploit Development aqui no blog, pelo que caso queira saber mais sobre este assunto recomendo dar uma vista de olhos em "https://www.offensive-security.com/metasploit-unleashed/exploit-development/" e nas páginas seguintes até Web App Exploit Dev.
- Para ver um exemplo do uso do MSF egghunter mixin recomendo ir a "https://www.offensive-security.com/metasploit-unleashed/egghunter-mixin/"
- Durante a análise deste tutorial encontrei um site que acho interessante, utilizado para registar as exploits existentes, isto encontra-se em "https://www.exploit-db.com/"
Comentários
Enviar um comentário