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"
สคริปต์นี้ให้คำอธิบายโดยละเอียดเกี่ยวกับรายละเอียดของประเทศในแพ็กเก็ตเครือข่ายที่กำลังสื่อสารกัน
สคริปต์ข้างต้นจะสร้างผลลัพธ์ต่อไปนี้