Post on: Jul 1, 2024Last edited: Jul 1, 2024Words 00 min

type
status
date
slug
summary
tags
category
icon
password
Tweaker là những ghi chép của mình trong quá trình vọc vạch và thử nghiệm những cái mới. Series này sẽ bắt đầu với những bài viết về settings mình sử dụng daily. Enjoy.

Mở đầu

Bản thân mình cần sử dụng Linux rất nhiều, nhưng không thể vì thế mà từ bỏ Windows.
Cài máy ảo thì chậm, thiếu RAM, rồi không tận dụng được màn 144Hz. Dual boot thì time conflict, bất tiện, muốn đổi hệ điều hành thì phải restart máy, và 2 hệ điều hành thường không friendly với nhau.
Vài năm trước, khi WSL (Windows Subsystem for Linux) ra đời, khi mà mình có thể chạy Ubuntu trên Windows và thao tác trên cả 2 hệ điều hành cùng lúc mà không ảnh hưởng đến hiệu năng, mình đã nghĩ nó thực sự là một cuộc cách mạng. WSL 1 khi đó mới chỉ là giả lập Linux, chứ chưa support hết các chức năng mà Linux kernel bình thường cần có.
Đến WSL 2 thì Microsoft đã cài cắm hẳn một cái Linux kernel đã được tuỳ biến trong môi trường ảo Hyper-V nên trải nghiệm gần như không khác gì một hệ điều hành Linux hoàn chỉnh, và hiệu năng cũng không thua gì bare metal. Nếu máy ảo Hyper-V làm được gì thì WSL cũng có thể làm được, do đó nếu biết cách thì bạn gần như không bị giới hạn.

Arch

Trên Microsoft Store có sẵn WSL installation cho Ubuntu, Kali, SUSE và Fedora, but I use Arch btw. Mình sử dụng ArchWSL (kudos to yuk7, a Japanese girl), bản này là ổn định nhất và tốt nhất.
Nếu bạn đã có Scoop trên Windows:
root, mình sẽ khởi tạo pacman và mirrorlist cho nó (dùng mirror Hong Kong sẽ có tốc độ rất tốt), cài các package cơ bản, và tạo người dùng.
Khi ở user chính, mình sẽ cài cấu hình máy lưu trong dnx04/dotfiles (github.com) sử dụng chezmoi, cài yay helper cho pacman, cùng đống tool và wordlist. Cần gì thì cài cái đó.
Đến đây thì cơ bản là xong base.

Networking với WSL

Về networking, WSL và Windows có networking mặc định dùng NAT. Khi bạn chơi HackTheBox chẳng hạn, bật OpenVPN và có địa chỉ IP, thì đó là IP của Windows, khi bạn ip addr thì sẽ không thấy xuất hiện interface của OpenVPN Windows. Do vậy, khi bạn nmap đến target thì vẫn có kết quả trả về, vì cái này có NAT của Windows lo cho, nhưng đến khi bạn cần reverse shell, XSS, SSRF từ WSL sang target thì không được (đơn giản là vì Windows và WSL trong cùng LAN, Windows và target trong cùng LAN, nhưng không có nghĩa là WSL và target đã là cùng LAN nếu như không cho Windows biết cách để map request gửi từ target vào đâu).
Để WSL có thể tương tác hai chiều với challenge, chúng ta cần expose WSL ra một chỗ nào đó, và ở đây chúng ta sẽ portproxy (hay port mapping), có nghĩa là bất cứ request nào gửi đến cổng của Windows sẽ được forward thẳng vào WSL. Theo đó chúng ta cũng có thể chạy ngrok , cloudflared để public WSL qua một tunnel (khi chơi HTB thì không cần, nhưng các bài CTF mà target không cùng LAN thì cần public domain).
Chúng ta sử dụng netsh . Ví dụ, câu lệnh dưới đây sẽ route toàn bộ traffic đến Windows ở cổng 1337 đến WSL ở cổng 1337.
Để biết IP của WSL trong LAN thì chạy ip addr. eth0 chính là LAN connection giữa Windows và WSL, trong đó IP của WSL là 172.31.74.199.
notion image
Để kiểm tra tất cả các port mapping đã được tạo, sử dụng:
Giờ các bạn có thể thoải mái XSS, SSRF, reverse shell qua port proxy đã được tạo.

Kết

Cảm ơn các bạn đã đọc bài viết này. Series vẫn sẽ còn tiếp tục, và trong các bài viết của series Challenger, mình sẽ editorial/writeup bằng settings này. Trong quá trình làm biết đâu sẽ có gotchas, đó cũng sẽ là một sự bổ sung tốt để đánh giá khả năng thực chiến.
Hẹn gặp lại các bạn trong các bài viết tiếp theo. See ya.
 

Loading...
My setup #2 - Tuỳ biến zsh (ft. zinit)

⚙️My setup #2 - Tuỳ biến zsh (ft. zinit)

A shiny shell experiences awaits.