/jpcap-mitm

一个基于jpcap的实现局域网内点对点攻击的网络嗅探器,带有数据包统计和聚类可视化前端模块。

Primary LanguageJavaScript

README

本应用所解决的问题为局域网攻击和数据嗅探,能对局域网中的任意目标终端进行点对点攻击,从而嗅探该目标终端的上行及下行互联网数据。 针对网络数据的多源异构和实时性,结合MongoDB天然的NoSQL特性,设计具有针对性的探测和监控引擎。

1. 服务端:网络攻击所使用的核心技术包括winpcap、ARP Spoofing(ARP欺骗)、MITM(中间人攻击)、网络数据包的分组/拼接/解压/还原等
2. 客户端:前端所使用的核心技术包括Angular6、ECharts等

一、网络库及IP转发

1) MacOS

拷贝libjpcap.jnilib到/Library/Java/Extensions/目录中,该库为本人MacOS开发机编译生成

1. 开启IP转发:sudo sysctl -w net.inet.ip.forwarding=1
2. 查看IP转发已开启(为1):sudo sysctl -a | grep net.inet.ip.forwarding
3. 系统重启后IP转发会变为默认关闭状态,一定要重新开启,否则被攻击目标无法正常上网

进入第二步和第三步,若程序运行时发现jpcap模块无法正常工作,则需回此处按以下步骤自行编译jpcap库

1. 从GitHub下载并解压jpcap库的源代码:https://github.com/mgodave/Jpcap
2. 从终端命令行进入目录src/main/c,并在该目录执行make命令进行编译
3. 编译成功后,拷贝src/main/c/libjpcap.jnilib到/Library/Java/Extensions/目录
2) Windows 10 (64位)

拷贝Jpcap.dll到环境变量Path任意目录中,该库为本人Windows开发机编译生成

1. 开启IP转发:以管理员身份打开注册表编辑器,定位注册项HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters,选择项目IPEnableRouter并修改数值为1
2. 系统重启后IP转发会变为默认关闭状态,一定要重新开启,否则被攻击目标无法正常上网

进入第二步和第三步,若程序运行时发现jpcap模块无法正常工作,则需回此处按以下步骤自行编译jpcap库

1. 从GitHub下载并解压jpcap库的源代码:https://github.com/jpcap/jpcap
2. 从终端命令行进入目录src/main/c,并在该目录执行make命令进行编译
3. 编译成功后,拷贝Jpcap.dll到环境变量Path任意目录

二、JDK

Windows安装x86(32位)JDK 1.8版本(1.8.0_211以上),MacOS安装64位JDK 1.8版本(1.8.0_211以上),并配置好环境变量path及classpath,在terminal中通过以下命令可以查看java版本则表示安装成功

java -version

三、运行程序

  1. 在任意位置创建工作目录,拷贝resources/jpcap-mitm.jar到工作目录中, 保证本机8888端口未被占用,运行jar包: java -jar jpcap-mitm.jar

  2. 等待此信息则表示运行成功: *** Started Application in ** seconds

  3. 使用Chrome浏览器打开http://localhost:8888 ,或通过其他设备远程访问此程序也可http://***:8888

  4. 选择网卡,设置本机IP和MAC,攻击目标目标IP和MAC,网关IP和MAC,注意都是内网IP,应该都在同一个网段, 系统会自动读取本机IP和MAC,用户仍需要仔细确认是否正确并补充其他

  5. 设置好上述信息后点击设置按钮,则应用程序建立好相应的连接,每次启动程序后都可以重新设置连接,但设置好后就不再能够修改, 只能够启动攻击和停止攻击,若要重新设置则可kill掉jpcap-mitm.jar进程并重新运行即可

  6. 每次停止攻击后,会自动启动对该次攻击的所有捕获数据包进行分析,因此攻击时间越长,所需的分析时间就会越长, 分析过程中查看analysis和statistic页面会实时看到当前状态是否分析完成。在dump页面能看到每次攻击记录,并能对该次记录重新分析或者删除。


四、程序说明

本项目前端界面如下

  1. 局域网攻击页面

    1. 在此界面设置网卡以及本机/攻击目标/网关的IP和MAC,设置所监控的域名列表(一个域名,或者多个以,分割的域名),然后可控制启动或停止攻击。
    2. 第一步是进行必要的设置,每次刚刚启动程序后才可设置这些信息,信息会保存到数据库,下次启动程序会自动读取这些信息。第一次启动时,程序会自动读取本机IP和MAC,需要仔细确认是否正确。网卡需要选择正常上网所使用的网卡设备,攻击目标表示我们需要监控的手机或者其他设备,网关则一般指我们连WIFI的路由器或其他网关设备。以上这些信息都需要严格配置正确,否则程序无法正常运行。设置界面如下图所示: image1
    3. 网关IP和MAC可以在网关设备上查看,或者也能通过本机路由表中看出来,如下图所示: image2
    4. 当我们配置完成保存时或启动攻击时,会先对所监控的域名地址列表进行DNS解析并将相应的IP列表更新到MongoDB,然后才正式启动局域网攻击和数据嗅探,界面上会呈现出攻击状态,如下图所示: image3
    5. 此时可以拖动页面到下半部分查看数据包嗅探统计,统计部分主要分为上行和下行两种类型,其中又分为TCP/UDP/ICMP/ARP四种类型。上行即从攻击目标往外发出的数据包,下行即攻击目标所收到的数据包。当此时我们攻击目标未浏览指定的域名列表时,所有统计都一直是0,若开始浏览指定的域名列表后,可以看到统计开始有了数据,如下图所示: image4
    6. 当我们停止攻击后,会自动开始详细分析本次攻击的数据包,攻击完成后也会有弹出提示,如下图所示: image5
  2. 数据包分析页面

    1. 在此界面,首先会显示数据包分析过程是否处在进行中,若还在分析则此时需要等待分析完成再来查看结果,分析完成后状态会自动切换为完成状态,并可查看分析结果。
    2. 首先,我们可以选择数据包过滤器:攻击批次id/上行或下行/协议/内容,每一项过滤器都可以多选或者留空,留空则表示所有类型都匹配。在点击过滤后,下面第一个表格会显示出分析后的所有匹配的数据包,注意这里的数据包和攻击界面中的数据包是不一样的,这里的数据包都是经过组合的数据包,而攻击界面中的为原始帧,所以这里的数据包数量一定是远远小于之前的数据包数量的。在第一个表格中我们可以看到数据包所有重要的字段,同时也包括分析后的一些字段(如HTTP头/HTTP体/METHOD等等),如下图所示: image6
    3. 在点击选中第一个表格的任一行后,查看下面的第二个表格,可以看到这个数据包所对应的是哪些原始数据帧,我们可以在这里看到这些数据包的一些基本帧字段,如下图所示: image7
  3. 数据包统计页面

    1. 同样,在此界面,首先会显示数据包分析过程是否处在进行中,若还在分析则此时需要等待分析完成再来查看结果,分析完成后状态会自动切换为完成状态,并可查看分析结果。
    2. 首先,我们可以根据攻击批次进行过滤,可以多选或者留空,留空则表示所有攻击批次都匹配,如下图所示: image8
    3. 在我们点击过滤后,首先可以查看到各种详细协议类型的数据包统计,主要也分为上行和下行两大类,各自又区分为HTTP/HTTPS/TCP/UDP/ICMP/ARP这些协议类型,注意其中TCP表示的是HTTP和HTTPS除外的其他TCP协议类型,而HTTP和HTTPS由于比较特殊和通用,我们才拿出来进行独立分析和统计,统计界面如下图所示: image9
    4. 继续往下查看,还可以看到各协议类型的饼状图,分为上行和下行两大类,如下图所示: image10
    5. 同样,还可以看到各内容类型的饼状图,分为上行和下行两大类,其中other表示的是HTTP/HTTPS除外的其他TCP数据包以及其他协议无法分析类型的数据包,由于无法分析出其数据包的实际内容,故统一归类为other,如下图所示: image11
    6. 我们还能看到基于时间线的不同数据包内容分布图,下半部分的多线图为各数据包内容的趋势变化,而上半部分的饼状图则与鼠标联动,当鼠标在多线图的x轴进行移动的时候,饼状图会实时显示出当前x轴所在时间的各数据包内容的统计和占比,如下图所示: image12
    7. 同样,也是时间线图也是分为上行和下行的,如下图则为下行数据: image13
  4. 数据包仓库页面

    1. 在此页面,我们可以查看每一次攻击的基本数据,如攻击ID/攻击时间/上行数据帧数量/下行数据帧数量等。同时,我们还可以对每一次攻击过程进行操作,可以重新分析,或者删除所有相关数据包和分析结果。如下图所示: image14

PS

  1. 若有web弹出错误提示时,查看命令行jar包是否异常退出,网络库有可能会crash,此时尝试重新启动jar

  2. 若路由器开启了静态IP/MAC绑定,或关闭DHCP功能,或有ARP攻击防御模块,则可能导致本应用程序只能拦截上行数据包,无法正常拦截下行数据包,若无法配置路由器设置,则只能更换测试机重新攻击,因此若网关设备较强大,可能无法完全攻击成功

  3. 启动攻击后,若被攻击目标无法上网,一定是没有开启IP转发功能导致只实施了ARP攻击而代理功能被系统拦截,查看上述第一步开启IP转发再次攻击即可

  4. 本项目只是短期完成的基于架构层面的POC,并非一个完整项目,仅供趣味探索


Contribution