Quantcast
Channel: CodeSection,代码区,网络安全 - CodeSec
Viewing all articles
Browse latest Browse all 12749

【技术分享】KaliRouter安装与使用全指南

0
0
【技术分享】KaliRouter安装与使用全指南

2017-09-07 13:42:17

阅读:822次
点赞(0)
收藏
来源: github.com/koenbuyens





【技术分享】KaliRouter安装与使用全指南

作者:WisFree





【技术分享】KaliRouter安装与使用全指南

译者:WisFree

预估稿费:200RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿


写在前面的话

KaliRouter可以将你的Kali linux设备变成一台路由器,你将不仅能够记录下所有的网络流量(Wireshark),而且还可以将HTTP和HTTPS流量发送至一个拦截代理,例如BurpSuite等等。


安装

我们会将Kali Linux配置成一台代理型路由器,连接至这台“路由器”的客户端(例如嵌入式设备和手机App)都可以正常进行网络通信,但是其中的某些数据包将会被我们的Kali Linux设备所拦截并使用Wireshark进行监控,并重定向至代理服务器。Kali Linux设备以及BurpSuite都将以透明代理的形式运行,客户端不会感受到它们的存在。整个运行架构如下图所示:


【技术分享】KaliRouter安装与使用全指南

在配置我们的Kali Linux之前,我们需要配置VMWare和网络接口。

1. 我们在VMWare中运行Kali Linux,并将网络改为桥接模式,这样可以让Kali Linux直接链接到网络之中,而被监控的设备(应用程序或手机)同样可以正常连接至网络。


【技术分享】KaliRouter安装与使用全指南

2. 我们需要连接两个适配器(以太网和WiFi),并给Kali分配USB适配器,我们选择使用的是Ethernet LAN Network Adapter ASIX AX88179和Atheros UB91C USB无线适配器。其实你可以使用任何一款Linux兼容的USB无线网卡,只要它支持混杂模式即可。


【技术分享】KaliRouter安装与使用全指南

将Kali Linux配置成路由器

我们的Kali Linux设备会将USB网络接口的流量路由到Kali自己的网络连接,创建路由器的方法如下。

开始配置之前,我们需要先查看本机的网络接口。我们可以使用命令ifconfig查看插入USB适配器之前和之后的设备状态。

$ifconfig-a

我们的以太网适配器一般会是eth1,而WiFi适配器一般是wlan0。


【技术分享】KaliRouter安装与使用全指南

我们需要配置network-manager服务,告诉该服务我们会将适配器的MAC地址添加到/etc/NetworkManager/NetworkManager.conf文件的unmanaged-devices参数之中,并接管我们自己添加的接口。

[keyfile]unmanaged-devices=mac:d8:eb:97:b6:ce:12;mac:56:6b:a2:90:c4:b9

接下来,重启网络服务,这样设备会进入“无管理”状态。

$/etc/init.d/networkingrestart

以太网配置

在创建监听网络之前,我们需要选择一个合适的网络地址和子网掩码。我们这里要选择一个与Kali所在网络IP范围(eth0)不同的地址空间,以此来确保受监控设备的IP地址不会跟我们的监控网络发生冲突。在我们的配置环境中,我们选择的是172.16.0.0/12。

由于我们需要让我们的无线网络和有线网络处于同一网络中,我们选择使用bridge-utils工具在这两者之间搭建一个桥梁。

$apt-getinstallbridge-utils

接下来,删除任何分配给有线网络接口(eth1)的IP地址。

$ipaddrflushdeveth1

创建一个名为br0的桥接接口。

$brctladdbrbr0

将我们的有线接口eth1添加到桥接接口br0。

$brctladdifbr0eth1

接下来,开启桥接接口br0。

$iplinksetdevbr0up

根据我们选择的IP地址空间,给这个br0接口分配一个IP地址。因为它的功能是作为被监控设备的网关,所以我们选择172.16.0.1。

$ipaddradd172.16.0.1/12devbr0

Wi-Fi数据链路层

配置好以太网接口之后,使用hostapd程序创建一个无线接入点。使用apt-get命令安装hostapd(关于hostapd的使用和配置信息,请参考【这份文档】):

$apt-getinstallhostapd

然后使用下列信息创建配置文件hostapd.conf:

#createawirelessnetworkwiththisinterface;changeitifyourwirelesscardisnotwlan0interface=wlan0#changethisifadifferentbridgeinterfacewaschosenbridge=br0#thenameofourwirelessnetworkssid=Monitor-Network#Changethepassphrasetosomethingyoulikewpa_passphrase=Monitor-Network#thedriveruseddriver=nl80211auth_algs=3#thewirelesschannelwelistenon.channel=7driver=nl80211#themodeweuse(g)hw_mode=g#wedon'tloglogger_stdout=-1logger_stdout_level=2max_num_sta=5rsn_pairwise=CCMPwpa=2wpa_key_mgmt=WPA-PSKwpa_pairwise=TKIPCCMP

创建完无线接口wlan0之后,我们要启用无线接入点:

$iplinksetdevwlan0up

接下来,让hostapd程序开启监控网络:

$hostapd./hostapd.conf-B

网络配置

配置好无线和有线网络之后,我们要开启内核选项以支持IP转发功能,然后配置iptables将所有的网络数据包转发至该接口。

$sysctl-wnet.ipv4.ip_forward=1$iptables-PFORWARDACCEPT$iptables-tnat-APOSTROUTING-oeth0-jMASQUERADE

网络服务

我们使用dnsmasq来作为我们的DNS和DHCP服务器。使用下列命令安装dsnmasq:

$apt-getinstalldnsmasq

然后使用下列信息创建并配置dnsmasq.conf文件:

#listentothisinterface;changeitifadifferentbridgenamewaschoseninterface=br0#giveIPaddresses,leaseisvalidfor8hoursdhcp-range=172.16.0.10,172.31.255.254,8h#routerdhcp-option=3,172.16.0.1#dnsserverdhcp-option=6,172.16.0.1#upstreamDNSserverserver=8.8.8.8log-querieslog-dhcp#includeaddressesaddress=/attacker.com/172.16.0.1

配置完成之后,我们需要重启dnsmasq守护进程:

$servicednsmasqrestart

嗅探并拦截流量

在我们的监控网络中所有设备的网络流量都是通过桥接接口br0传递的,我们可以直接通过wireshark来嗅探该接口的网络流量。我们这里选择使用tshark,它相当于是命令行界面的wireshark。接下来,我们将监听接口br0,并将所有监听到的流量数据写入到一份文件中(output.pcap)。

$tshark-ibr0-w./output.pcap-P

一般来说,我们还需要拦截流量,因此我们还需要设置一些iptables规则来将HTTP/1.1和HTTPS流量重定向到我们的拦截代理(BurpSuite)。关于其他协议的设置方法,请参考这份【文档】。

第一条规则将会拦截端口80和443的所有tcp包(HTTP和HTTPS),并将数据发送给BurpSuite。

$iptables-tnat-APREROUTING-ibr0-ptcp--dport80-jDNAT--to-destinationburpip:burp_http_port$iptables-tnat-APREROUTING-ibr0-ptcp--dport443-jDNAT--to-destinationburpip:burp_https_port

第二条规则将确保响应信息在发送到客户端之前先经过我们的Kali Linux。

$iptables-tnat-APOSTROUTING-oeth0-s172.16.0.0/12-dburpip-jMASQUERADE

第三条规则其实并不是必须的,这条规则将确保Kali路由能够正确地将数据包发送给BurpSuite。

$iptables-AFORWARD-s172.16.0.0/12-dburpip-ibr0-oeth0-ptcp--dportburp_http_port-jACCEPT$iptables-AFORWARD-s172.16.0.0/12-dburpip-ibr0-oeth0-ptcp--dportburp_https_port-jACCEPT

接下来,我们要将BurpSuite配置成一个透明代理。打开BurpSuite,点击Proxy标签,然后选择Options菜单,然后点击Add按钮。


【技术分享】KaliRouter安装与使用全指南

对于HTTP流量,我们要给BurpSuite绑定80端口,然后勾选All interfaces选项。


【技术分享】KaliRouter安装与使用全指南

接下来我们跳转到Request handling标签页,然后勾选Support invisible proxying选项。这一步操作是必须的,勾选之后客户端将不会感受到BurpSuite的存在。


【技术分享】KaliRouter安装与使用全指南

对于HTTPS流量,我们需要给BurpSuite绑定端口443,然后勾选All interfaces。


【技术分享】KaliRouter安装与使用全指南

然后点击Request handling标签,按照如下图所示的方法进行设置。


【技术分享】KaliRouter安装与使用全指南

自动化

为了方便起见,我们应该尽可能地实现自动化。你可以在我的GitHub主页找到相关的配置文件以及脚本。

首先,从github获取Kalirouter的项目源码:

$gitclonehttps://github.com/koenbuyens/kalirouter.git

安装相关的依赖组件:

apt-getinstalldnsmasqhostapdbridge-utils

插入USB适配器,然后使用命令iptables -a找出适配器的名字和MAC地址。

告诉network-manager服务我们将通过添加适配器MAC地址来接管相关接口,并运行命令/etc/init.d/networking restart来重启网络服务。/etc/NetworkManager/NetworkManager.conf文件的修改内容如下所示。

[keyfile]unmanaged-devices=mac:d8:eb:97:b6:ce:12;mac:56:6b:a2:90:c4:b9

修改hostapd.conf文件,将其指向正确的无线网络接口(默认为wlan0)。

修改monitor.sh脚本中的接口变量,将其指向正确的接口。其中的WIRELESS_MONITOR_INTERFACE, WIRED_MONITOR_INTERFACE和 INTERNET_INTERFACE分别对应的是USB无线网卡、USB有线网卡和Kali的VMWare接口。默认为wlan0、eth1和eth0。

修改monitor.sh脚本中的代理变量,将其指向BurpSuite的IP地址以及端口,其中PROXYBOX, PROXYBOX_HTTP_PORT和 PROXYBOX_HTTPS_PORT分别对应的是IP地址、HTTP端口和HTTPS端口,默认为172.16.0.1、80和443。

运行下列命令执行脚本文件:

$./monitor.sh

输出数据保存在dumps/output.pcap文件中,你可以通过按下Ctrl+C来停止监控网络流量。

拦截嵌入式设备、移动应用和windows应用程序的通信数据

运行了我们的监控脚本之后,我们就可以开始监控目标设备的网络流量了。


嵌入式设备

我们用一台嵌入式设备连接到了我们的监控网络中,然后让设备开始正常运行。如下图所示,我们的嵌入式设备(10.0.0.38)正在通过UDP与一个内网移动应用进行通信(192.168.1.230)。


【技术分享】KaliRouter安装与使用全指南

移动应用

在开始监控移动应用之前,我们必须先设置好相关的信任证书。

1. 通过点击Proxy标签页中的Import/export CA certificate选项导出BurpSuite证书。


【技术分享】KaliRouter安装与使用全指南

2. 通过选择Certificate in DER format选项将证书导出为DER文件。


【技术分享】KaliRouter安装与使用全指南

对于安卓端应用来说,我们先要添加信任证书。

1. 进入安卓系统的安全设置中。


【技术分享】KaliRouter安装与使用全指南

2. 然后从SD卡安装证书。


【技术分享】KaliRouter安装与使用全指南

3. 选择证书。


【技术分享】KaliRouter安装与使用全指南

4. 命名证书。


【技术分享】KaliRouter安装与使用全指南

导入证书之后,我们就可以开始监听应用程序的网络数据了。

1. 让移动设备连接到我们的监控网络之中,密码是我们在hostapd配置文件中设置的密码。


【技术分享】KaliRouter安装与使用全指南

2. 然后运行应用程序,下面给出的例子是Amtrak应用程序。


【技术分享】KaliRouter安装与使用全指南

3. 我们可以在BurpSuite中看到监听到的安卓应用HTTPS流量。


【技术分享】KaliRouter安装与使用全指南

4. 我们可以观察到wireshark记录下的所有的流量(图例为Facebook App)。


【技术分享】KaliRouter安装与使用全指南

Windows应用程序

1.让我们的Windows设备连接到我们的监控网络之中。


【技术分享】KaliRouter安装与使用全指南

2. 导入Windows证书,详细步骤请参考这份【文档】。

3. 开启需要监控的应用程序,我们这里直接选择Web浏览器。


【技术分享】KaliRouter安装与使用全指南

4. BurpSuite和Wireshark都将接收到所有的网络流量。


【技术分享】KaliRouter安装与使用全指南

【技术分享】KaliRouter安装与使用全指南

总结

Kalirouter可以帮助我们将Kali Linux设备转换成一个能够拦截网络流量的代理路由器,对该项目感兴趣的同学可以访问Kalirouter的GitHub主页获取详细信息【传送门】。注:同学们还可以在树莓派上使用Kalirouter。


参考资料

https://www.psattack.com/articles/20160410/setting-up-a-wireless-access-point-in-kali/

https://cybergibbons.com/security-2/quick-and-easy-fake-wifi-access-point-in-kali/

https://ubuntuforums.org/showthread.php?t=716192

https://help.ubuntu.com/community/NetworkConnectionBridge

https://wiki.archlinux.org/index.php/Internet_sharing#Configuration

https://wiki.archlinux.org/index.php/software_access_point#Bridge_setup

https://wiki.debian.org/BridgeNetworkConnections#Manual_bridge_setup

https://help.ubuntu.com/lts/serverguide/network-configuration.html

http://www.tldp.org/HOWTO/TransparentProxy-6.html



【技术分享】KaliRouter安装与使用全指南
【技术分享】KaliRouter安装与使用全指南
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://github.com/koenbuyens/kalirouter

Viewing all articles
Browse latest Browse all 12749