How to intercept the HTTP traffic via WireGuard

บทความนี้กล่าวถึงวิธีการดักจับข้อมูลผ่านโปรแกรม Burp Suite โดยโปรแกรมมีการป้องกันที่เรียกว่า Proxy-aware ตัวอย่างเช่นโปรแกรมที่ถูกเขียน Flutter เป็นต้น เพื่อให้นักทดสอบเจาะระบบสามารถที่จะดักจับและวิเคราะห์ข้อมูล การส่งและรับระหว่าง Application และ Server ได้

Proxy-aware แปลว่าระวัง และถ้ามีการตั้งค่า proxy บนเครื่องมันจะรู้และไม่วิ่งไปหา proxy ส่วนของ proxy-aware เป็น adjective ดังนั้น เรากำลัง bypass proxy-aware application

Mr.Juttikhun Jirathanan

บทความโดย
Nattakit Intarasorn และ บุญเพิ่ม มาร์ค อัครเดช
Cybersecurity Consultant

ติดตั้ง WireGuard

1. ใช้คำสั่งติดตั้งดังนี้ WireGuard บน Kali ดังนี้

sudo su
apt update && apt install -y wireguard iptables resolvconf qrencode

2.สร้าง Private และ Public Key

wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey

เก็บค่า
qqCzF+jwuW++CMdaQlzkWebMVLz4Z1yUmuYPpBFgfwI=

3. Server private key

cat /etc/wireguard/privatekey
<Server_Private_Key>

เก็บค่า
SNXhmB4n+2OmxN0M7Wfq3A78xfp7FdRdvKhQj51gNFs=

4. ปรับแต่งค่า WireGuard

nano /etc/wireguard/wg0.conf

5. เอาค่าปรับแต่งไฟล์ WireGaurd โดยแทนที่ค่า Privatekey

[Interface]
 Address = 10.55.55.1/24,fd42:42:42::1/64
 ListenPort = 50409
 PrivateKey = SNXhmB4n+2OmxN0M7Wfq3A78xfp7FdRdvKhQj51gNFs=
 PostUp = iptables -A FORWARD -i eth0 -o wg0 -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; sudo iptables -t nat -A PREROUTING -i wg0 -p tcp --dport 0:65535 -j REDIRECT --to-port 8080
 PostDown = iptables -D FORWARD -i eth0 -o wg0 -j ACCEPT; iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; sudo iptables -t nat -A PREROUTING -i wg0 -p tcp --dport 0:65535 -j REDIRECT --to-port 8080

6. วิธี Save และ ออกจาก Nano

Enter
ctrl + x
Yes
Enter

7. ตั้งค่า Routing

echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/wg.conf
echo "net.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.d/wg.conf
sysctl --system

8. Start Services

systemctl start "wg-quick@wg0"
systemctl enable "wg-quick@wg0"

9. สร้าง VPN Client Profile

wg genkey | tee /etc/wireguard/clientprivatekey1 | wg pubkey | tee /etc/wireguard/clientpublickey1

เก็บค่า
jtE2zKVezcIRxZ8NNzlqyIvazPg8SmXdEyGdTa3HJDM=

npsk | tee /etc/wireguard/presharedkey1 

เก็บค่า
Sfgl7R4R3L7sI/37Wak/hn21/xsqGq2qM33xKP2eQcY=

10 เก็บค่า Key

<Client_Private_Key>
cat /etc/wireguard/clientprivatekey1
เก็บค่า
yPbGskf4CMOtE0k3GxYzE3GWklOoMOBAz5pg9sF2VX8=

<Server_Public_Key>
cat /etc/wireguard/publickey
เก็บค่า
qqCzF+jwuW++CMdaQlzkWebMVLz4Z1yUmuYPpBFgfwI=

<Client_Pre_Shared_Key>
cat /etc/wireguard/presharedkey1
เก็บค่า
Sfgl7R4R3L7sI/37Wak/hn21/xsqGq2qM33xKP2eQcY=

11. ตรวจสอบ IP ของ Kali (Bridge Network)

ifconfig
เก็บค่า
192.168.0.101

12. จัดเตรียมค่าที่ได้มาจากข้างต่น PrivateKey, PublicKey, PresharedKey และ Endpoint

[Interface]
PrivateKey = yPbGskf4CMOtE0k3GxYzE3GWklOoMOBAz5pg9sF2VX8=
Address = 10.55.55.2/32,fd42:42:42::2/128
DNS = 1.1.1.1,1.0.0.1

[Peer]
PublicKey = qqCzF+jwuW++CMdaQlzkWebMVLz4Z1yUmuYPpBFgfwI=
PresharedKey = Sfgl7R4R3L7sI/37Wak/hn21/xsqGq2qM33xKP2eQcY=
Endpoint = 192.168.0.101:50409
AllowedIPs = 0.0.0.0/0,::/0

13. สร้าง VPN config – Client

mkdir /root/vpnclient && cd /root/vpnclient
nano wg0-client-1.conf

14. แปะค่าที่จัดเตรียมไว้

15. Client Key

<Client_Public_Key>
cat /etc/wireguard/clientpublickey1
jtE2zKVezcIRxZ8NNzlqyIvazPg8SmXdEyGdTa3HJDM=

<Client_Pre_Shared_Key>
cat /etc/wireguard/presharedkey1
Sfgl7R4R3L7sI/37Wak/hn21/xsqGq2qM33xKP2eQcY=

[Peer]
PublicKey = jtE2zKVezcIRxZ8NNzlqyIvazPg8SmXdEyGdTa3HJDM=
PresharedKey = Sfgl7R4R3L7sI/37Wak/hn21/xsqGq2qM33xKP2eQcY=
AllowedIPs = 10.0.0.2/32,fd42:42:42::2/128

16. เพิ่ม Client เปิด Nano และเอาค่าปรับแต่งที่เตรียมเอาไว้ใส่เข้าไป

nano /etc/wireguard/wg0.conf

17. Update ค่า Configurations

wg syncconf wg0 <(wg-quick strip wg0)

18. สร้าง QR code

qrencode -t ansiutf8 -l L < wg0-client-1.conf

19. Download WireGuard ลงเครื่อง Android

20. Scan QR code

21. เมื่อ Scan เสร็จสิ้นให้ตั้งชื่อ

22. เมื่อกดเปิดจะเห็นว่ามี icon vpn ขึ้นมา

การตั้ง Burp เพื่อดักจับข้อมูล

  1. ตั้งค่า Interface ตามรูป

2. ตั้งค่า Support invisible proxy ตามรูป

3. ทดลองเปิด Browser ใน Android

4. ในการเปิดใช้งานครั้งต่อไปเมื่อ Login เข้า Kali แล้ว จะสังเกตุเห็นว่ามีการเปิดใช้งาน VPN ทันที เราสามารถตั้งค่า Burp ตามข้างบน และที่ Mobile เปิดการเชื่อมต่อได้ทันที (ต้องอยู่ในวง Lan เดียวกัน)

ปัญหาที่อาจทำให้ดักจับข้อมูลไม่ได้

  • ตรวจสอบว่า Kali ตั้ง Network เป็น Bridged ถ้าตั้งแล้วไม่สามารถเข้าใช้งาน Internet ได้ให้ Shutdown VM และ เครื่องคอมพิวเตอร์อีกครั้ง
  • อยู่ในวง Lan เดียวกัน ให้ทำการตรวจสอบว่า Android และ Computer อยู่วง Lan เดียวกันจาก WiFi Hotspot เดียว ทดลองดัก Burp ด้วยวิธีปกติก่อน http://blog.itselectlab.com/?p=4813 ว่าสามารถเชื่อมต่อกันได้
  • ถ้าตรวจสอบแล้ว สามารถดักปกติได้ แสดงว่า Burp สามารถทำงานได้ และเครือข่ายเชื่อมต่อถึงกันได้ ให้ตรวจสอบค่า Configure WireGard ว่าค่า Key ต่าง ๆ Set ถูกต้องหรือไม่
nano /etc/wireguard/wg0.conf
cat /etc/wireguard/privatekey
cd vpnclient 
nano wg0-client-1.conf
cat /etc/wireguard/clientprivatekey1
cat /etc/wireguard/publickey
cat /etc/wireguard/presharedkey1
ifconfig
  • ถ้าตรงกันหมดแต่ไม่สามารถดักข้อมูลได้ ให้เปลี่ยน ส่วนของ Address เป็นเลข IP อื่น ๆ ที่ไม่เหมือนเดิม และต้องอยู่วงเดียวกับ Server VPN ด้วย
ส่วนนี้ใน nano /etc/wireguard/wg0.conf
[Interface]
Address = 10.55.55.2/32,fd42:42:42::2/128

ส่วนนี้ใน nano wg0-client-1.conf
[Interface]
 Address = 10.55.55.1/24,fd42:42:42::1/64
 ListenPort = 50409

แต่การเปลี่ยนดังกล่าวจะให้ update ค่า configuration และเปิดใช้งาน VPN ใหม่ รวมถึงที่ Android ให้ scan QR code ติดตั้งใหม่ด้วย

Update Configure
wg syncconf wg0 <(wg-quick strip wg0)

Restart Service
systemctl restart "wg-quick@wg0"
systemctl enable "wg-quick@wg0"

สร้าง QRcode
qrencode -t ansiutf8 -l L < wg0-client-1.conf

อ้างอิง

บทความอื่น ๆ ITSELECTLAB