Usando Python para monitorar ataques ARP Poisoning com Arduino.
No vídeo existente no link abaixo, é demonstrado um projeto simples que qualquer pessoa pode realizar com um
Arduino. O Arduino é uma plataforma de prototipagem eletrônica open source que utiliza um microcontrolador AVR e uma placa simples de I/O (entrada/saída).
Para este projeto foi utilizado um script Python rodando no computador, que monitora a existência de ARP Poisoning na rede com o uso do plugin ARP Cop do Ettercap.
Se o ataque de ARP Poisoning é detectado, o script se comunicará com o Arduino através da porta USB e o Arduino irá ligar um LED.
Dessa maneira o usuário pode ser rapidamente informado quando sua rede estiver sob ataque.
Código do Arduino (Arp_Cop.pde):
int outPin = 11;
int val;
int arpPoison = 0;
int red;
void setup()
{
pinMode(outPin, OUTPUT); // sets the digital pin as output
Serial.begin(9600);
Serial.flush();
}
void loop()
{
// Read from serial port
if (Serial.available())
{
val = Serial.read();
Serial.print(val);
if (val == 'A')
{
arpPoison = 1;
for(red = 0; red <= 255; red+=5)
{
analogWrite(outPin, red);
delay(30);
}
while (arpPoison == 1)
{
for(red = 255; red >= 25; red-=5)
{
analogWrite(outPin, red);
delay(30);
}
for(red = 25; red <= 255; red+=5)
{
analogWrite(outPin, red);
delay(30);
}
val = Serial.read();
Serial.print(val);
if (val == 'R')
{
arpPoison = 0;
for(red = 255; red >= 0; red-=5)
{
analogWrite(outPin, red);
delay(30);
}
}
}
}
}
}
Script python:
import sys, subprocess, serial
if len(sys.argv) != 3:
print "syntax: " + sys.argv[0] + " <Network Interface> <Serial Interface>\n"
exit()
try:
ser = serial.Serial(sys.argv[2], 9600)
except serial.SerialException:
print "Error: Could not setup Serial Port!"
sys.exit()
ettercap = subprocess.Popen("ettercap -i " + sys.argv[1] + " -TQP arp_cop //", shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
try:
while 1:
inPut = ettercap.stdout.readline()
inPut = inPut.split(' ')
for msg in inPut:
if msg == "(WARNING)":
print "Arp Poisoning Detected!"
ser.write('A')
except:
ser.write('R')
print "Terminated!"
#out = ettercap.communicate('q')[0]
#print "Done!"
[1] Comentário enviado por
mordecai em 11/04/2010 - 16:37h:
e a aí Luiz já pegou seu Arduino ? Muito legal esse artigo!
pelo que entendi o script em python usa o ettercap para detectar o Arp poisoning e manda pro arduino que faz piscar um led. Vou fazer um teste aqui. Abraço.
[2] Comentário enviado por
luizvieira em 11/04/2010 - 19:12h:
Fala meu amigo Maurício!
Ainda não peguei meu Arduino não, estava brincando com o kit de um amigo lá do trabalho onde estava e fizemos esse teste e funcionou bonito :-)
Isso foi feito com o ARP Poisoning, imagine com outros tipos de ataques... Seria interessante, por exemplo, tentar uma implementação para detectar ataques de DoS. O "bichinho" é muito show!
Ainda vou fazer um robô para os meus filhos um dia...rs.
[ ]'s