Sei não mas vou ficar com a primeira opção da Lina, engenharia social, talvez o desafio seja provar que não é preciso devenvolver um algoritmo monstruoso para se ter uma quebra na segurança, como ja é bem provado.
faz um dns poisoning na rede da faculdade, faça um ftpd falso em java na sua maquina e espera alguem acessar o ftp falso…
depois da primeira tentativa de senha… tenta redirecionar pro dns verdadeiro como se a senha tivesse sido errada e depois volte tudo ao normal
[quote=dohko]faz um dns poisoning na rede da faculdade, faça um ftpd falso em java na sua maquina e espera alguem acessar o ftp falso…
depois da primeira tentativa de senha… tenta redirecionar pro dns verdadeiro como se a senha tivesse sido errada e depois volte tudo ao normal[/quote]
Interessante, está idéia… não sabia que tem como dar o migué no dns
[quote=ricardospinoza]Salve povo,
Gostaria de uma orientação sobre a lógica de um algoritmo de força bruta… explico.
Meu desafio é descobrir o usuário e a senha de um servidor de ftp da faculdade…
Pensei inicialmente e fazer alguns laços com arrays de nros, letras e char especiais… mas na minha kbça a coisa parece cavalar…
Alguma dica?
[/quote]
Já ouviu falar de sniffer? Rode um na sua faculdade e veja a tonelada de senhas… rs…
O pior são os Zezinhos que rodam WEP… dá até pena…
[quote=Felipe Kan][quote=ricardospinoza]Salve povo,
Gostaria de uma orientação sobre a lógica de um algoritmo de força bruta… explico.
Meu desafio é descobrir o usuário e a senha de um servidor de ftp da faculdade…
Pensei inicialmente e fazer alguns laços com arrays de nros, letras e char especiais… mas na minha kbça a coisa parece cavalar…
Alguma dica?
[/quote]
Já ouviu falar de sniffer? Rode um na sua faculdade e veja a tonelada de senhas… rs…
O pior são os Zezinhos que rodam WEP… dá até pena…[/quote]
O sniff funciona se os dados não estão encriptografados. O wireshark(ethereal) funciona perfeitamente nessas circunstâncias.
Agora, o lance da força bruta é legal para se aprender um algoritmo interessante. Pode-se usar algoritmos genéticos para otimizar o força bruta, usando como base uma característica de um usuário.
http://www.doc.ic.ac.uk/~nd/surprise_96/journal/vol4/tcw2/report.html
Se isso é um desafio, imagine o tamanho da senha que foi criada…
tipo: FDS1$dBx*3&@dsr
haja processador.
Pow djow…
Faz um keylogger e joga na rede… + facil
[quote=truck1n]Se isso é um desafio, imagine o tamanho da senha que foi criada…
tipo: FDS1$dBx*3&@dsr
haja processador.[/quote]
O gargalo não vai estar no processador… o gargalo vai estar nas requisições do servidor… e na largura de banda…
Algoritmo de Brute Force hoje em dia não adianta nada… senhas dos Word e Excel são quebradas por furos no algoritmo… e não por Brute Force… Me lembro que já quebraram até a geração de números primos do RSA… mas foi por falhas na randomização e não por Brute Force…
Alguns meses atrás demonstraram como capturar dados da urna eletrônica… e advinhem… usaram eletromagnetismo para descobrir… ou seja… de acordo com tal tecla pressionada, era gerado um campo magnético diferente… aí já viu a tamanho da encrenca né…
O mais interessante é descobrir furos em buffers… e daí deslocar o endereço de função para uma função codificada em um binário de imagem ou mp3…
Hmmm vantagem grande do Java… aplicações em Java nunca vão estar com essas vulnerabilidades… mas em compensação é só interpretar e gerar um bytecode que tem o efeito parecido… rs…
[quote=sulito][quote=Mark_Ameba]Se voce souber o nome de usuario já é um avanço.
Ter que fazer as n comparações de senhas com x usuarios vai x*n de tempo, e meu amigo isso pode durar uma vida.[/quote]
sei disso, concordo, isso pode durar a vida
mas entende…
eu dei uma explicada para ele, para ele fazer o programa, mas o meu objectivo não é que o programa encontre a password , é que se ele fizer o programa ele vai exercitar o cerebro.
eu ja fiz um programa assim a uns 2 anos atras, e pus num servidor que eu tinha invadido, e esperei por meses e nada.hihihi até que o admin do site deu conta do programa[/quote]
Fiquei curioso , gostaria de expermentar . Podes me dar algumas dicas ? Por onde comecar ? Que tecnologias usar ou saber (Servlets , Swing , TCP , etc)
Desde ja agradeco
[quote=Felipe Kan][quote=truck1n]Se isso é um desafio, imagine o tamanho da senha que foi criada…
tipo: FDS1$dBx*3&@dsr
haja processador.[/quote]
O gargalo não vai estar no processador… o gargalo vai estar nas requisições do servidor… e na largura de banda…
Algoritmo de Brute Force hoje em dia não adianta nada… senhas dos Word e Excel são quebradas por furos no algoritmo… e não por Brute Force… Me lembro que já quebraram até a geração de números primos do RSA… mas foi por falhas na randomização e não por Brute Force…
Alguns meses atrás demonstraram como capturar dados da urna eletrônica… e advinhem… usaram eletromagnetismo para descobrir… ou seja… de acordo com tal tecla precionada, era gerado um campo magnético diferente… aí já viu a tamanho da encrenca né… [/quote]
O jeito mais fácil é engenharia social.
[quote=Ehb][quote=sulito][quote=Mark_Ameba]Se voce souber o nome de usuario já é um avanço.
Ter que fazer as n comparações de senhas com x usuarios vai x*n de tempo, e meu amigo isso pode durar uma vida.[/quote]
sei disso, concordo, isso pode durar a vida
mas entende…
eu dei uma explicada para ele, para ele fazer o programa, mas o meu objectivo não é que o programa encontre a password , é que se ele fizer o programa ele vai exercitar o cerebro.
eu ja fiz um programa assim a uns 2 anos atras, e pus num servidor que eu tinha invadido, e esperei por meses e nada.hihihi até que o admin do site deu conta do programa[/quote]
Fiquei curioso , gostaria de expermentar . Podes me dar algumas dicas ? Por onde comecar ? Que tecnologias usar ou saber (Servlets , Swing , TCP , etc)
Desde ja agradeco[/quote]
Na verdade eu fiz isso a muito tempo uns 2 anos atras com php, e deixei o codigo php a rodar no servidor remoto, no php tem funções para conectar via ssh, telnet, ftp e etc
ai apenas fiz o codigo para ir trocando de user name e de password
Engenharia social ou keylogger =D
Engenharia social não pega massas… e Keylogger depende de acesso root…
Esses caras que invadem fazem por estouros de pilha e invasão de buffers… quem entende um pouco de C/C++ sabe que fazer isso é super simples… em C/C++ a aplicação vive dando core dump e invadindo memória… em Java isso nunca vai acontecer… o máximo seria um Null pointer Exception…
[quote=Felipe Kan]Engenharia social não pega massas… e Keylogger depende de acesso root…
Esses caras que invadem fazem por estouros de pilha e invasão de buffers… quem entende um pouco de C/C++ sabe que fazer isso é super simples… em C/C++ a aplicação vive dando core dump e invadindo memória… em Java isso nunca vai acontecer… o máximo seria um Null pointer Exception…[/quote]
Sim, isso por causa da caixa de areia, como dizem. A memória é gerenciada pela máquina virtual, e um programa java não pode ultrapassar os limites de seu proprio escopo em memória, agora com c++ é bem diferente. Dá para varrer a ram do início ao fim.
unsigned int* mPtr = 100800; // pode estar apontando para qualquer área na ram
No win 98 era possível recuperar o timer do sistema apenas setando o endereço certo, como no exemplo acima
Um sistema operacional bem feito deve proteger acessos de memória de aplicações distintas, se você criar uma senha na memória por um programa e tentar ler essa memória por outro, não vai conseguir varrer… por isso que o sonho de qualquer Hacker é fazer alguém com acesso root a executar uma aplicativo vulnerável…
De nada adiantaria descobrir uma falha de buffer se o usuário não tiver o acesso root… mas já ví muitos programas vulneráveis rodando como prioridade de root…
Geralmente quando um usuário root está logado, e algum aplicativo tem brecha, a primeira coisa que um Hacker faz é injetar um shellcode… e assim vai fazer o sistema ficar quebrado até alguém formatar e consertar a falha crítica…
Brincando aqui pra criar um algoritmo de força bruta, acabei fazendo isso aqui:
[code]chars = ‘abcdefghijklmnopqrstuvwxyz’
limit = 5
total = 0
word = ‘barba’
stop = False
def combine (symbol, actual):
global stop
if stop:
return
if symbol == word:
print 'Found word: ' + word
stop = True
return
if actual == limit:
return
print symbol
global total
total = total + 1
for c in chars:
combine(symbol + c, actual + 1)
for c in chars:
combine(c,0)
print ‘%d words generated’ % total[/code]
Repare que o teste é simples demais e é fácil de transformar em Java. Entretanto, isso demora muito tempo. Agora imagina eu, que coloquei só letras e minúsculas. Se tu colocasse todas as maisculas + letras + simbolos, cara, iria demorar muito, mas muito tempo pra achar. No final das contas, engenharia social pode funcionar, mas algo que ainda seria mais legal é hooking ou dll injection, porque é possível pegar os dados antes mesmo de serem criptografados, o que seria mais eficiente do que um sniffer.
Eu só não entendi o motivo desse tópico não ter sido moderado. O cara quer invadir o servidor da Universidade e vocês ainda incentivam? Daqui há pouco vão perguntar como invadir o servidor do GUJ.
Não foi moderado por que sabre invadir um servidor é algo, realmente faze-lo é problema dele.
E é algo teoricamente facil mas tecnicamente dificil.
[quote=sulito]
Na verdade eu fiz isso a muito tempo uns 2 anos atras com php, e deixei o codigo php a rodar no servidor remoto, no php tem funções para conectar via ssh, telnet, ftp e etc
ai apenas fiz o codigo para ir trocando de user name e de password[/quote]
Entendi , ja tenho uma ideia de como fazer.
Muito obrigado