Ir para conteúdo

Felipe.Silva

Membros
  • Total de itens

    19
  • Registro em

  • Última visita

Reputação

14 Good

Últimos Visitantes

124 visualizações
  1. Felipe.Silva

    Termos que vocês gostariam de ver na Wikipédia

    Eu criei um artigo falando sobre a ferramenta HT Editor. Não é um termo sobre o assunto, mas eu acho que seria interessante criar artigos sobre ferramentas utilizadas nessa área.
  2. Felipe.Silva

    duvida

    Há um tempo eu fiz um script em Python que inseria um shellcode em um executável PE. Não está bem feito, mas já deve lhe servir de base para entender. (quem sabe um dia desses eu reescrevo e.e) Eu basicamente insiro o shellcode no final do código, mudo o entry point para apontar para o shellcode e no final do shellcode eu coloco um jmp para o entry point original. Link para você dar uma olhada no fonte: https://github.com/Silva97/peinject.py Se você quer fazer isso e não sabe Assembly então está colocando a carroça na frente dos bois. Antes de tentar modificar um executável você tem que entender como ele funciona. Dica de estudo: - Aprenda Assembly. - Pesquise e estude sobre o formato de executável PE. Obs.: Gravity Falls \o/
  3. Felipe.Silva

    Como reportar falhas

    Isso já aconteceu comigo. Mandei um e-mail e eles corrigiram a falha... Mas não mandaram nem um "obrigado" como resposta. (sério, não deram resposta nenhuma) No caso eu "tropecei" na falha. Se você fez pentest sem autorização no sistema deles tenha cuidado. Mesmo que você tenha o objetivo de ajudar eles não querem saber. Os fins não justificam os meios neste caso. e.e Eu acharia arriscado contatar eles, podem te processar e você pode até ir para a cadeia. (sim, isso é crime) A menos que tenham ativo algum serviço de Bug Bounty. A propósito, se quer ganhar dinheiro testando sistemas dos outros ir atrás de um Bug Bounty é uma boa pedida. Dá uma olhada no site HackerOne.
  4. Felipe.Silva

    Como encontrar a função main?

    @gzn. Feito. Agora o script identifica quando usar a instrução LEA. Testei com o ls e funcionou. Só que com isso nós conseguimos o endereço raw... Endereço na memória não vai rolar. Mas com o endereço raw já nos dar a possibilidade de meter um breakpoint... E quando abrir no debugger nós restauramos a instrução que foi alterada. Em relação a packers eu estou na mesma que você. Não conheço nenhum Se alguém puder ao menos indicar um packer para que a gente possa fazer uns testes... Eu nem sei como um packer funciona. kkkkk Link de novo para o script: https://github.com/Silva97/tools/blob/master/mainsearch.py
  5. Felipe.Silva

    Como encontrar a função main?

    Como eu disse: « Se eu fosse fazer uma ferramenta eu pegaria o entry point e a partir dele buscaria pelo call. Ao achar o call, os 4 bytes anteriores é o endereço da main » Falei do +0x20 somente se assumirmos que _start nunca muda. Se é o caso de mudar, então podemos procurar pelo call. (só procurar por FF 15) De acordo com os manuais da Intel o valor imediato sempre ficará em ultimo(como podemos ver aqui). Então não importa que instrução seja usada, desde que ela esteja logo antes do call vai funcionar. (e se o call não mudar também) Eu fiz um script em Python aqui. Testei no programa que você passou e em um Olá mundo. Nos dois funcionou tranquilo. Link: https://github.com/Silva97/tools/blob/master/mainsearch.py Faz uns testes ai para ver o que dá. EDIT: Eu fiz um teste aqui com o ls e agora que entendi o que você quis dizer com usar o LEA. Ele usa um endereço relativo de acordo com o valor de RIP... Muda muita coisa. '-' Vou tentar adaptar o algoritmo para identificar isso.
  6. Felipe.Silva

    Como encontrar a função main?

    Você quer dizer com um debugger ou software automatizado? No debugger eu encontro a main "na mão" mesmo. O entry point aponta para _start. O primeiro call dentro de _start é para __libc_start_main. O primeiro argumento para __libc_start_main é o endereço da main. Você pode pegar esse endereço sendo passado para ele ou acompanhar a execução até a hora que ele dá call na main. Para x64 ele passa o primeiro argumento em rdi, e eu vi aqui que __libc_start_main preserva esse valor na pilha em [rsp+24] Mais para frente ele pega o endereço da main e joga em rax, e depois dá call rax. Como podemos ver no print abaixo: Mas como eu já disse, o primeiro argumento é o endereço da main. Se você quer pegar o endereço com uma ferramenta automática, eu pegaria daí. Veja rdi recebendo o endereço da main: A seta verde está bem no entry point, isto é, no início de _start. Se eu fosse fazer uma ferramenta eu pegaria o entry point e a partir dele buscaria pelo call. Ao achar o call, os 4 bytes anteriores é o endereço da main. Se assumirmos que o código de _start nunca muda, então nem precisaríamos fazer uma busca. É só calcular entry_point + 0x20 Só que claro, o endereço "raw" e não virtual.
  7. Felipe.Silva

    As gafes do mundo da TI

    O número 2 eu discordo. Realmente para fontes mais novas isso é verdade, mas fontes antigas ou baratinhas não tem essa proteção "por natureza". Ligar uma fonte barata/antiga direto na tomada é pedir para queimar. Não é a toa que usar estabilizador era uma coisa comum antigamente. A número 30 deve ser culpa do marketing. Os caras escrevem Mega e instruem os vendedores a dizerem Megabytes.
  8. Felipe.Silva

    Favicon do forum

    Não aparece porque nenhum favicon foi definido.
  9. Felipe.Silva

    Computador travando

    As vezes "chutes" pensados de acordo com a ocasião é melhor do que seguir protocolos pensados por outras pessoas. Mas eu não disse para ele não fazer o teste na memória, eu até instrui ele de como fazer isso. '-'
  10. Felipe.Silva

    Computador travando

    Tanto Windows quanto Linux já vem com ferramenta para testar a memória. No Linux, só entrar nas opções avançadas no menu de boot. Lá tem a opção para usar o memtest86+ No Windows, só pressionar F8 antes da tela de carregamento do Windows. Vai aparecer várias opções, dentre elas a opção para testar a memória. Porém eu não acho que seja problema de memória. Se fosse, geralmente travaria na hora que você executasse um programa que exigisse muita RAM. (Como o Chrome ou Java, heheheh. Brincadeira. ) Sem falar que geralmente problema de memória dá aquela famosa tela azul da morte. Pelo menos até o momento você não disse que apareceu ela, só disse que travava. Como você disse que ocorre em momentos muito variados(e as vezes nem ocorre), eu chutaria que a fonte do problema é no software e não no hardware. Quais são as chances de ter um malware instalado no seu PC? Vai ver sua placa de vídeo está zoada justamente porque um malware está usando ela para minerar criptomoedas. Ai sua placa de vídeo dá algum fail e o PC trava.
  11. Felipe.Silva

    Informações demais em fotos

    Você tem razão... Mas o software do Facebook pode ler esses metadados para descobrir sua localização. A limpeza dos metadados só protege para que outras pessoas o leiam. Ótimo artigo! Eu já sabia que as câmeras gravavam essas informações, descobri faz umas semanas. A melhor solução é nós construirmos nosso próprio celular e programar o S.O. também. :v
  12. Felipe.Silva

    Ajuda com provável erro de lógica (Python)

    @bornman, cara eu fiz um exemplo em Bash do que eu acho que é o que você está tentando fazer. No caso eu simplesmente usei ping. O código: https://github.com/Silva97/tools/blob/master/lhosts.sh Acabei me empolgando e fiz logo uma tool completa.
  13. Felipe.Silva

    Ajuda com provável erro de lógica (Python)

    Errado. Muitos PCs nem tem nenhuma porta aberta. Geralmente as portas 80 e 8080 são usadas por servidores HTTP. Se no PC não tem nenhum servidor rodando, então a porta não vai estar aberta. A porta 25 geralmente, se não me engano, é usada por servidor de e-mail. (SMTP eu acho) Se não tem um servidor desses rodando no PC, então a porta também vai estar fechada. Uma maneira simples de verificar se um host está no ar é simplesmente dando um ping. (inclusive existe ferramenta para fazer isso: $ ping -c4 host) Porém uma máquina pode ser configurada para não responder a pacotes de ping.
  14. Felipe.Silva

    Termos que vocês gostariam de ver na Wikipédia

    Me desculpa, mas eu fui obrigado a desfazer quase todas as suas alterações. Antes de editarem eu sugiro que estudem sobre o livro de estilo, como inserir uma fonte no artigo e quais fontes podem ser usadas. A Wikipédia tem um tutorial introdutório para novos editores para ajudar nessa iniciativa. E claro, devemos ter cuidado para não inserir conteúdo que não seja enciclopédico. Temos que entender o que a Wikipédia não é. Além de ser muito importante seguir o princípio da verificabilidade quando inserir novas informações em um artigo. (ou criar um) A Wikipédia incentiva que os novatos sejam ousados, mas se deve ter cautela. Senão as edições terão o efeito contrário do proposto, diminuindo a qualidade do projeto ao invés de melhorá-lo.
  15. Felipe.Silva

    Termos que vocês gostariam de ver na Wikipédia

    Acho que seria interessante colocar informações sobre a estrutura dos formatos PE e ELF. Os artigos já existem mas precisam de mais informações. O artigo do ELF foi até marcado para revisão. Eu já havia pensado em fazer isso mas não tenho conhecimento suficiente. Tenho medo de acabar colocando besteira lá.
×