T�pico: Raw WINSUCKS... preciso de uma opini�o.
10 Raw WINSUCKS... preciso de uma opini�o.
Realmente WINSUCKS para quem est� acostumado com UNIX sockets... Enfim, segue o problema:
Escrevendo um TCP/SYN scanner minimalista para Win32, tenho conseguido uns erros meio malucos, onde eu consigo enviar o pacote com a flag de sincroniza��o ativada, mas a a resposta n�o volta. Sniffei a comunica��o com o Ethereal e realmente o pacote flui pela rede, mas tudo indica que se perde.
Procurei me informar sobre as limita��es de raw sockets sobre win32 e vi que apenas pode-se colocar o socket (n�o a interface) em modo prom�scuo e al�m disso, testando, notei que s� h� recep��o de pacotes vindos para o socket, n�o os enviados por ele, at� aqui tudo ok, pois s� preciso do retorno SYN/ACK ou SYN/RST. Mas estou com este problema da resposta n�o voltar. O Ethereal validou ambos checksum's (TCP e IP). E sim, envio a SYN flag para uma porta que sei estar aberta.
J� tentei de tudo e acho que conceitualmente cheguei na causa do problema:
Um pacote TCP/IP com porta origem N foi enviado pela rotina, ao chegar uma resposta, a pilha TCP nota que n�o h� nenhuma conex�o "em tr�nsito" com a porta origem id�ntica � porta destino indicada no datagrama, com isso, o S.O. descarta silenciosamente o pacote. Ser� mesmo isso? O mais hil�rio � que o Ethereal usa a Winpcap que at� onde eu sei utiliza ndi para acessar o pacote num n�vel mais baixo, ou seja, mesmo um pacote descartado deveria ser listado pelo sniffer.
J� comparei o que escrevi com dezenas de outras rotinas parecidas que usam winsock, at� encontrei um exemplo de syn scanner com winsock (mas tamb�m n�o funciona, e possui coisas rid�culas do tipo "htons(0)" (...) definitivamente n�o � um bom par�metro...)... Mas no geral n�o parece existir nada de errado com minha rotina.
Algu�m j� teve algum problema parecido usando WINSOCKS? Mesmo no XP SEM SP2 raw sockets possuem restri��es?
10 Re: Raw WINSUCKS... preciso de uma opini�o.
Resolvi em termos, por meio de um truque sujo, dei um jeito de "registrar" a porta origem indicada no pacote SYN e o pacote SYN/ACK ou SYN/RST j� sobe para o user mode, realmente era o que pensava. O �nico problema � que tem o efeito colateral de um RST retornar para o host scaneado por conta da porta registrada n�o estar esperando nenhum SYN/ACK oficialmente. N�o sei se esse RST caracterizaria um handshake TCP falho, a ponto de ficar registrado num log o que acabaria deixando de ser TCP SYN scan. Claro que um IDS bem configurado pegaria f�cil um pacote desses (mesmo s� o SYN), mas vamos abstrair esse fato. Algu�m que esteja habituado a analisar esse tipo de log sabe me informar se a maioria dos processos servidores tendem a logar somente conex�es estabelecidas ou tamb�m conex�es abruptamente interrompidas?
Outra coisa me intriga, s�o esses exemplos de syn scan em winsock que dizem funcionar, sei l�, a teoria � linda, mas realmente seguindo a l�gica do TCP/IP � bem imposs�vel na pr�tica, em user mode.