Python Forensics - Dshell และ Scapy

DShell

Dshellเป็นชุดเครื่องมือวิเคราะห์ทางนิติวิทยาศาสตร์บนเครือข่าย Python ชุดเครื่องมือนี้ได้รับการพัฒนาโดยห้องปฏิบัติการวิจัยของกองทัพสหรัฐฯ การเปิดตัวชุดเครื่องมือโอเพนซอร์สนี้มีขึ้นในปี 2014 จุดสำคัญของชุดเครื่องมือนี้คือการตรวจสอบทางนิติวิทยาศาสตร์ได้อย่างง่ายดาย

ชุดเครื่องมือประกอบด้วยตัวถอดรหัสจำนวนมากซึ่งแสดงอยู่ในตารางต่อไปนี้

ซีเนียร์ ชื่อและคำอธิบายตัวถอดรหัส
1

dns

ใช้เพื่อแยกคำค้นหาที่เกี่ยวข้องกับ DNS

2

reservedips

ระบุแนวทางแก้ไขปัญหา DNS

3

large-flows

รายชื่อ netflows

4

rip-http

ใช้แยกไฟล์จากการรับส่งข้อมูล HTTP

5

Protocols

ใช้สำหรับระบุโปรโตคอลที่ไม่ได้มาตรฐาน

ห้องปฏิบัติการกองทัพสหรัฐฯได้ดูแลที่เก็บโคลนใน GitHub ตามลิงค์ต่อไปนี้ -

https://github.com/USArmyResearchLab/Dshell

โคลนประกอบด้วยสคริปต์ install-ubuntu.py () ใช้สำหรับการติดตั้งชุดเครื่องมือนี้

เมื่อการติดตั้งสำเร็จมันจะสร้างไฟล์ปฏิบัติการและการอ้างอิงที่จะใช้ในภายหลังโดยอัตโนมัติ

การอ้างอิงมีดังนี้ -

dependencies = { 
   "Crypto": "crypto", 
   "dpkt": "dpkt", 
   "IPy": "ipy", 
   "pcap": "pypcap" 
}

ชุดเครื่องมือนี้สามารถใช้กับไฟล์ pcap (การดักจับแพ็กเก็ต) ซึ่งโดยปกติจะบันทึกในระหว่างเหตุการณ์หรือระหว่างการแจ้งเตือน ไฟล์ pcap เหล่านี้สร้างโดย libpcap บนแพลตฟอร์ม Linux หรือ WinPcap บนแพลตฟอร์ม Windows

สแคปปี้

Scapy เป็นเครื่องมือที่ใช้ Python เพื่อวิเคราะห์และจัดการการรับส่งข้อมูลเครือข่าย ต่อไปนี้เป็นลิงค์สำหรับชุดเครื่องมือ Scapy -

http://www.secdev.org/projects/scapy/

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

Scapy มีความสามารถในการพล็อตโดยใช้เครื่องมือของบุคคลที่สามหรือการพิมพ์ลายนิ้วมือระบบปฏิบัติการ

ลองพิจารณาตัวอย่างต่อไปนี้

import scapy, GeoIP #Imports scapy and GeoIP toolkit 
from scapy import * 
geoIp = GeoIP.new(GeoIP.GEOIP_MEMORY_CACHE) #locates the Geo IP address 
def locatePackage(pkg): 
src = pkg.getlayer(IP).src #gets source IP address 
dst = pkg.getlayer(IP).dst #gets destination IP address 
srcCountry = geoIp.country_code_by_addr(src) #gets Country details of source 
dstCountry = geoIp.country_code_by_addr(dst) #gets country details of destination 
print src+"("+srcCountry+") >> "+dst+"("+dstCountry+")\n"

สคริปต์นี้ให้คำอธิบายโดยละเอียดเกี่ยวกับรายละเอียดของประเทศในแพ็กเก็ตเครือข่ายที่กำลังสื่อสารกัน

สคริปต์ข้างต้นจะสร้างผลลัพธ์ต่อไปนี้