เกี่ยวกับโปรเจคนี้
ยินดีต้อนรับกลับมาครับน้องๆ วันนี้พี่มีของดีมาแนะนำ นั่นคือ ARPoLan โปรเจคที่เริ่มต้นจากการทดลองเล่นๆ อยากเห็นศักยภาพของ Arduino Pro Micro กับโมดูล W5500 Ethernet ว่าจับคู่กันแล้วจะเวิร์คแค่ไหน เจ้าอุปกรณ์ตัวนี้มันทำได้หลายอย่างเลย ทั้งสแกนเน็ตเวิร์ค, โจมตีแบบ ARP spoofing, หรือแม้แต่ทำตัวเป็น Rubber Ducky แบบ Local ได้ด้วย มาดูกันดีกว่าว่าจะสร้างและทดสอบเครื่องมือความปลอดภัยเน็ตเวิร์คตัวนี้ยังไง
ฟีเจอร์ & ส่วนประกอบ
ARPoLan ประกอบด้วยส่วนประกอบทรงพลังหลายตัวที่ทำให้มันทำอะไรได้เพียบ:
- Network Scanning: ค้นหาอุปกรณ์ในเครือข่ายท้องถิ่นด้วยการส่ง ARP request และรวบรวมการตอบรับ
- ARP Spoofing: โจมตีแบบ ARP spoofing เพื่อดักจับและจัดการกับข้อมูลในเครือข่าย
- HID Functionality: ใช้ความสามารถ USB HID ของ Atmega32u4 เพื่อเปิดช่องทางการโจมตีเพิ่มเติม
- Real-time Monitoring: มีตัวบ่งชี้ทั้งแบบไฟและผ่าน Serial สำหรับตรวจจับการโจมตีและกิจกรรมในเครือข่าย
เริ่มต้นกันเลย
พี่ออกแบบ PCB สำหรับ ARPoLan ด้วย Altium Designer เป็นแบบสองชั้นเรียบง่ายแต่ประสิทธิภาพสูง นี่คือรายการส่วนประกอบที่ใช้:

- Atmega32u4 Microcontroller: ดูแลเรื่องการสื่อสาร USB และงานประมวลผลต่างๆ
- W5500 Ethernet Module: ให้การเชื่อมต่อเครือข่ายที่เสถียร พร้อมฮาร์ดแวร์ TCP/IP stack ในตัว
- 25 MHz Crystal Oscillator: ดูแลเรื่องความแม่นยำของเวลาในการทำงานเครือข่าย
- RJ45 Ethernet Socket: สำหรับเชื่อมต่อเครือข่าย พร้อมไฟสถานะในตัว
- LM1117 Voltage Regulator: จ่ายไฟ 3.3V ที่เสถียรให้กับ W5500
- USB A Port: ใช้สำหรับโปรแกรมและถ่ายโอนข้อมูลได้ง่ายๆ
- Passive Components: ตัวเก็บประจุและตัวต้านทาน (Resistor) สำหรับรักษาความเสถียรของไฟและสัญญาณ
การสื่อสารระหว่าง W5500 กับ Atmega32u4 ใช้โปรโตคอล SPI เพื่อให้การถ่ายโอนข้อมูลเร็วและน่าเชื่อถือ
แผนภาพวงจร (Schematic)
PCB ของ ARPoLan ถูกออกแบบด้วย Altium Designer เป็นแบบสองชั้นที่เน้นความกะทัดรัดและประสิทธิภาพ บอร์ดนี้รวมส่วนประกอบที่จำเป็นทั้งหมดไว้ เพื่อให้การเชื่อมต่อระหว่าง Atmega32u4 และ W5500 น่าเชื่อถือ

ตารางการเชื่อมต่อ
- ขา SS (Slave Select) สามารถต่อกับขา Digital ใดๆ บน Arduino Pro Micro ได้ แต่ต้องกำหนดให้ถูกต้องในโค้ด
- ต้องต่อ GND ของ Arduino Pro Micro กับ GND ของโมดูล W5500 ให้เรียบร้อย เพื่อให้มีกราวด์ร่วมกัน
- การตั้งค่านี้จะทำให้การสื่อสาร SPI ระหว่าง Arduino Pro Micro กับโมดูล W5500 Ethernet ทำงานได้

วิธีใช้งาน
โค้ดแรก: Local Rubber Ducky โค้ดชุดแรกจะทำให้ ARPoLan กลายเป็น Rubber Ducky แบบ Local ความสามารถ USB HID ของ Atmega32u4 ทำให้มันทำตัวเหมือนคีย์บอร์ดหรือเมาส์ สามารถป้อนสตริงคีย์ล่วงหน้าที่โปรแกรมไว้เข้าไปในคอมพิวเตอร์ที่เชื่อมต่อได้ เป็นการทดลองที่สนุกดี แม้ว่าพี่จะเรียกมันว่าโค้ด "ไอเดียแย่ๆ" เพราะความเสี่ยงที่อาจตามมาก็ตาม ใช้ด้วยความระมัดระวังนะน้อง
โค้ดที่สอง: ARP Spoofing ต่อมา พี่ทดสอบโค้ด ARP spoofing สคริปต์นี้จะฉีดแพ็กเก็ต ARP ที่เป็นอันตรายเข้าไปในเครือข่าย โดยใช้พลังประมวลผลของ Atmega32u4 และความสามารถด้านเครือข่ายของ W5500 ถึงแม้จะไม่ทรงพลังสุดขีด แต่มันก็แสดงให้เห็นถึงศักยภาพของอุปกรณ์สำหรับงานด้านความปลอดภัยเครือข่ายได้ดี อย่าลืมใช้ในสภาพแวดล้อมที่ควบคุมได้และเพื่อการเรียนรู้เท่านั้นนะ อย่าเอาไปทำอะไรไม่ดีล่ะ สู้งานนะน้อง!
โค้ดที่สาม: การสแกนเครือข่าย โค้ดสุดท้ายนี้เอาไว้สแกนเครือข่ายบ้านเราเอง โดยการส่งคำขอ ARP ไปยังทุกๆ IP Address ในช่วงที่เรากำหนด ARPoLan ของเราก็จะสามารถตรวจจับอุปกรณ์ที่กำลังออนไลน์อยู่ในเครือข่ายได้ ฟีเจอร์นี้สำคัญมากๆ ทั้งสำหรับการตรวจสอบเครือข่ายและการทดสอบเจาะระบบ (Penetration Testing) เนี่ยแหละ
รายละเอียดเทคนิคเพิ่มเติม: การสแกนเครือข่ายและนิติคอมพิวเตอร์
ฟังก์ชันหลักของการสแกนของ ARPoLan นี่คือเครื่องมือนิติคอมพิวเตอร์เครือข่ายที่ทรงพลังมาก มันทำงานโดยการกวาดล้าง (Sweep) อย่างเป็นระบบผ่านเครือข่ายย่อย (Subnet) ในพื้นที่ เพื่อค้นหาอุปกรณ์ทุกชิ้นที่เชื่อมต่ออยู่
อัลกอริทึม Ping-Sweep Traversal: โค้ดมันไม่ได้แค่ Ping ไปที่เดียวหรอก มันจะวนลูปผ่านช่วง IP Address ซึ่งปกติคือ 1 ถึง 254 สำหรับเครือข่ายย่อยแบบมาตรฐาน /24 สำหรับแต่ละ IP Address ในช่วงนั้น มันจะส่งคำขอ Address Resolution Protocol (ARP) ออกไป อุปกรณ์ใดๆ ที่เปิดอยู่และอยู่ในเครือข่ายเดียวกันจะตอบกลับมาพร้อมกับ MAC Address ของมัน ทำให้เครื่องมือของเราสามารถบันทึกมันไว้ได้ กระบวนการนี้สามารถกวาดล้างเครือข่ายย่อยทั้งเครือข่ายได้ภายในไม่ถึงนาที เผยให้เห็นสมาร์ทโฟน, อุปกรณ์ IoT หรือคอมพิวเตอร์ที่ไม่ได้รับอนุญาตที่อาจซ่อนอยู่
// Example conceptual loop for network scanning
for (int i = 1; i <= 254; i++) {
IPAddress targetIP(192, 168, 1, i);
sendARPRequest(targetIP); // Send an ARP "Who has this IP?" request
if (checkForARPResponse()) {
logDevice(targetIP, respondingMAC); // Catalog the discovered device
}
}
Spoofing และระบบเตือนภัยฉุกเฉิน (Alerting Failsafe): นอกจากการค้นหาอุปกรณ์ธรรมดาแล้ว เครื่องมือนี้ยังสามารถตั้งค่าให้ทำการตรวจสอบแบบแอคทีฟได้อีกด้วย เราสามารถสร้าง "ทะเบียนอุปกรณ์ที่รู้จัก" ขึ้นมาโดยการเขียนลงไปในโค้ดหรือให้ระบบเรียนรู้เอง เมื่อการสแกนพบ MAC Address ใหม่ที่ไม่รู้จัก (เช่น `192.168.1.48`) มันก็จะสามารถส่งสัญญาณเตือนได้ สัญญาณเตือนนี้อาจเป็นไฟกระพริบบนบอร์ด, ข้อความใน Serial Log หรือแม้แต่การแจ้งเตือนไปยังภายนอกผ่าน Webhook ไปยังบริการอย่าง Telegram หรือ IFTTT เพื่อแจ้งผู้ดูแลเครือข่ายให้รู้ทันทีว่าอาจมีผู้บุกรุก
สิ่งที่ต้องพิจารณาสำหรับชุดเครื่องมือนิติคอมพิวเตอร์ไซเบอร์: ในขณะที่โปรเจกต์นี้ใช้ Atmega32u4 คู่กับ W5500 สำหรับการทำงานแบบใช้สายและล่องหน ฟังก์ชันการทำงานที่คล้ายกันนี้สามารถทำได้ด้วยชิป Wi-Fi อย่าง ESP8266 หรือ ESP32 สำหรับการกวาดล้างแบบไร้สาย การเพิ่มจอแสดงผล เช่น OLED ขนาดเล็ก จะช่วยให้เห็นตาราง IP Address ที่ค้นพบได้แบบเรียลไทม์
โค้ดและ PCB
ถ้าน้องๆ สนใจอยากประกอบโปรเจกต์นี้ขึ้นมาใช้เอง โค้ดและ Schematic พร้อมให้ดาวน์โหลดแล้วนะ ไปที่ Repository บน GitHub ได้เลย ถ้าโปรเจกต์นี้ได้รับความสนใจ พี่จะปล่อยไฟล์ PCB เป็นโอเพ่นซอร์สด้วยเหมือนกัน ลองเอาโค้ดไปทดสอบกันดูได้ แล้วก็แชร์ Feedback หรือไอเดียปรับปรุงกันมาได้เต็มที่เลย

สรุป
การสร้าง ARPoLan เป็นการเดินทางที่น่าสนใจมากๆ เข้าไปในโลกของความปลอดภัยเครือข่ายและการผสานรวมฮาร์ดแวร์ ตั้งแต่การออกแบบ PCB ไปจนถึงการเขียนโค้ดและทดสอบ โปรเจกต์นี้แสดงให้เห็นถึงศักยภาพของการนำองค์ประกอบที่เรียบง่ายแต่ทรงพลังมารวมกันเพื่อให้ได้ฟังก์ชันการทำงานที่ซับซ้อน คอยติดตามอัพเดทและฟีเจอร์ใหม่ๆ ต่อไปได้เลย และอย่าลืมไปดูรายละเอียดโปรเจกต์ให้ครบถ้วน ถ้าน้องๆ มีไอเดียหรือข้อเสนอแนะอะไร พี่ยินดีรับฟังเสมอนะ!