รู้จัก ThreatIngestor เครื่องมือรวบรวมภัยคุกคามจากแหล่งข้อมูลสาธารณะ

โดยปกติแล้ว นักวิจัยด้านความปลอดภัยทางไซเบอร์มักจะมีการเผยแพร่ที่เกี่ยวข้องกับ Threat Intelligence หรือข้อมูลภัยคุกคามที่ถูกค้นพบล่าสุดอยู่ในแหล่งข้อมูลสาธารณะอย่าง Twitter หรือเว็บไซต์ของนักวิจัยด้วยความปลอดภัย ซึ่งเราสามารถสกัดเอาข้อมูลภัยคุกคามจากแหล่งข้อมูลสาธารณะมาใช้งานได้ฟรี

ตัวอย่างข้อมูล Threat Intelligence จาก RSS feed ของ https://blog.talosintelligence.com/

เพื่อให้การสกัดเอาข้อมูลภัยคุกคามจากแหล่งข้อมูลสาธารณะสามารถทำได้ง่ายขึ้น ทีมตอบสนองการโจมตีและภัยคุกคาม (Intelligent Response) จะมาแนะนำเครื่องมือสำหรับสกัดและรวบรวมข้อมูลภัยคุกคามจากแหล่งข้อมูลสาธารณะ โดยเครื่องมือนี้มีชื่อว่า ThreatIngestor

ThreatIngestor คืออะไร

ThreatIngestor คือเครื่องมือสำหรับสกัดและรวบรวมข้อมูลภัยคุกคามจากข้อความภายในแหล่งข้อมูลสาธารณะ เช่น RSS feed, Twitter และแหล่งข้อมูลอื่นๆ ถูกสร้างโดย InQuest

ThreatIngestor สามารถรวบรวมข้อมูลได้ทั้งหมด 6 รูปแบบ ได้แก่

  1. Domains ที่เกี่ยวข้องกับภัยคุกคาม
  2. Hashes ที่เกี่ยวข้องกับภัยคุกคาม
  3. IP Addresses ที่เกี่ยวข้องกับภัยคุกคาม โดยรองรับทั้ง IPv4 และ IPv6
  4. URLs ที่เกี่ยวข้องกับภัยคุกคาม
  5. YARA Signatures สำหรับตรวจจับภัยคุกคาม และ
  6. Tasks ซึ่งเป็นการรวบรวมข้อมูลภัยคุกคามที่จำเป็นต้องใช้นักวิเคราะห์ในการสกัดข้อมูลเอง เช่น ข้อมูลที่อาจมีการฝังอยู่ใน PDF File ทำให้ ThreatIngestor ไม่สามารถสกัดข้อมูลออกมาได้

โดยข้อมูลที่รวบรวมมานั้นสามารถตั้งค่าเพื่อนำไปใช้ต่อได้อย่างหลากหลาย เช่น เขียนลงไฟล์ csv , เชื่อมต่อกับ MISP, เขียนลง database เพื่อนำไปแสดงผลในรูปแบบหน้าเว็บ เป็นต้น

สามารถดูรายละเอียดเกี่ยวกับแหล่งข้อมูลที่ ThreatIngestor รองรับและการนำข้อมูลที่ได้ไปใช้ต่อได้จากหน้า GitHub ของ ThreatIngestor และ คู่มือการใช้งาน ThreatIngestor  

วิธีการติดตั้ง ThreatIngestor

ThreatIngestor ถูกเขียนด้วย Python ทำให้สามารถติดตั้งได้ง่ายผ่านเมนู pip โดยต้องการ Python 3.6+ และ Python development headers จากนั้นใช้คำสั่ง

pip install threatingestor

หรือ

pip install threatingestor[all]

เพื่อติดตั้ง plugin พร้อมกับ ThreatIngestor 

นอกจากนี้หากต้องการให้ ThreatIngestor ดึงค่าจาก RSS Feed ต้องติดตั้ง feedparser เพิ่มเติมด้วย

pip install feedparser

และหากต้องการนำผลลัพธ์ไปแสดงผลในรูปแบบหน้าเว็บ web interface ที่มาพร้อมกับ ThreatIngestor ต้องติดตั้ง hug เพิ่มเติมด้วย

pip install hug

ซึ่งสามารถศึกษาวิธีติดตั้งได้จากคู่มือการติดตั้ง

วิธีการใช้งาน ThreatIngestor

ThreatIngestor ทำงานร่วมกับไฟล์ config.yml โดยสามารถใช้งานได้ด้วยการรัน

threatingestor config.yml

โดยผู้ใช้งานควรปรับแต่งไฟล์ตั้งค่าให้ตรงกับรูปแบบการใช้งานที่ต้องการ

วิธีการตั้งค่า ThreatIngestor

ไฟล์ config.yml มีส่วนประกอบในไฟล์ 4 ส่วนคือ

  1. general: (ต้องมี) ข้อมูลการตั้งค่าทั่วไป เช่น ตั้งค่าให้ ThreatIngestor รันตลอดเวลาหรือทำงานเพียงครั้งเดียว, ตั้งค่าให้ ThreatIngestor ดึงข้อมูลทุกๆ กี่วินาที และพาธไฟล์ database สำหรับเก็บข้อมูลการทำงานของ ThreatIngestor
  2. credentials: (ไม่จำเป็นต้องมี) ใส่ credentials เมื่อจะใช้ ThreatIngestor ไปดึงข้อมูลจากแหล่งที่จำเป็นต้องใช้ credentials เช่น Twitter
  3. sources (ต้องมี) แหล่งข้อมูลที่ต้องการให้ ThreatIngestor ดึง
  4. operators (ต้องมี) ตั้งค่าว่าจะให้ ThreatIngestor เอาผลลัพธ์ไปทำอะไร

ตัวอย่างไฟล์ config.yml สำหรับตั้งค่า ThreatIngestor

สามารถดูตัวอย่างการตั้งค่าได้จาก [1] , [2] และ [3]

ตัวอย่างการตั้งค่า ThreatIngestor เพื่อดึงข้อมูลและผลลัพธ์ที่ได้

จากนี้จะเป็นการแสดงตัวอย่างการตั้งค่าและใช้งาน ThreatIngestor ตังความต้องการในการใช้งานต่อไปนี้

  1. ตั้งค่าให้ทำการรันไปเรื่อยๆ ทุกๆ 15 นาทีเพื่อดึงข้อมูล
  2. ดึงข้อมูล RSS feed ของ https://blog.talosintelligence.com/
  3. นำข้อมูลที่ดึงได้เขียนใส่ CSV และเขียนลง database
  4. นำข้อมูลที่ database มาแสดงบนหน้าเว็บ

การเขียนการตั้งค่า

จากความต้องการในการใช้งานสามารถเขียนไฟล์ตั้งค่าได้ดังนี้

general:
    daemon: true
    sleep: 900
    state_path: state.db
sources:
  - name: rss-talos
    module: rss
    url: http://feeds.feedburner.com/feedburner/Talos
    feed_type: messy
operators:
  - name: csv
    module: csv
    filename: output.csv
  - name: sqlite-db
    module: sqlite
    filename: artifacts.db

ถ้าต้องการให้ ThreatIngestor ทำงานเพียงครั้งเดียวให้เปลี่ยนค่าดังนี้

daemon: false

จากไฟล์ตั้งค่าดังกล่าว ผลลัพธ์ที่ได้จะถูกเขียนลง output.csv และ artifacts.db ซึ่งเมื่อรันคำสั่ง

hug -m threatingestor.extras.webapp

จะเป็นการดึงข้อมูลจาก artifacts.db มาแสดงที่ http://localhost:8000/

ตัวอย่างการแสดงข้อมูลผ่านหน้าเว็บ

ตัวอย่างการแสดงข้อมูลในหมวด domain ผ่านหน้าเว็บ

สรุป

ThreatIngestor เป็นเครื่องมือที่ทำให้การสกัดและรวบรวมข้อมูลภัยคุกคามจากข้อความภายในแหล่งข้อมูลสาธารณะเป็นเรื่องที่ง่ายขึ้นด้วยการทำงานอัตโนมัติและสามารถใช้ร่วมกับเครื่องมืออื่นๆ ได้ เช่น นำข้อมูลที่ได้ส่งต่อไปยัง MISP