Kami telah diberikan file PCAP dan tugas saya adalah mencari:

Sebelum pengguna terinfeksi/diserang, mereka menggunakan mesin pencari populer (bukan Google) untuk mencari beberapa informasi. Gunakan Python untuk mengetahui 1) mesin telusur mana dan 2) kata kunci mana yang mereka gunakan untuk melakukan penelusuran tersebut. 3) Situs web mana yang direkomendasikan oleh mesin telusur dan 4) situs web mana yang benar-benar diakses pengguna?

Dengan membuka file PCAP di Wireshark, saya sudah menemukan jawaban yang benar: Bing

Walaupun saya masih belum bisa menentukan part 2, 3, dan 4

Namun ini jelas bukan tujuan penugasan karena saya harus menggunakan Python untuk mengembalikan informasi

Kode yang saya miliki sejauh ini adalah:

pcapfile = open('nameofpcapfile.pcap', 'rb')

x = pcapfile.read()
decoded = x.decode("iso-8859-1")

searchengines = ["www.google.com", "www.yahoo.com", "www.ask.com", "www.bing.com",
                 "www.aol.com", "www.baidu.com", "www.wolframalpha.com",
                 "www.duckduckgo.com", "www.yandex.ru"]

searchenginesfound = []

for i in searchengines:
    if i in decoded:
        searchenginesfound.append(i)


if searchenginesfound.__len__() == 0:
    print("Search engine not found")
elif searchenginesfound.__len__() == 1:
    print("Search Engine used: ", searchenginesfound)
elif searchenginesfound.__len__() > 1:
    print("Search Engines used: ", searchenginesfound)

Kode ini berhasil mengembalikan bing.com sebagai mesin pencari yang digunakan. Namun, saya tidak tahu apa yang harus dilakukan untuk bagian 2, 3, dan 4

Ada saran?

0
SNIPERATI0N 19 Maret 2019, 17:23

1 menjawab

Jawaban Terbaik

Pcaps memiliki format yang ketat, yang memungkinkan untuk membatasi paket yang berbeda. Di dunia yang sempurna, Anda perlu mengimplementasikan pcap parser, yang memungkinkan Anda mendapatkan setiap paket satu per satu untuk dipelajari. Anda menggunakan cara yang lebih berat, yang hanya mem-parsing semuanya sebagai teks (yang berfungsi dalam kasus Anda yang sangat spesifik :-) ), jadi itulah yang akan saya dokumentasikan. Namun, saya sangat menyarankan Anda untuk melihat ke dalamnya: jauh lebih mudah ketika Anda memiliki setiap paket sebagai miliknya sendiri.

Jika Anda diizinkan untuk menggunakan perpustakaan, beberapa seperti scapy atau dpkt dapat membantu Anda mengurai pcaps.

Pertama, Anda perlu tahu apa yang Anda cari. Kata kunci sebenarnya adalah parameter yang ditautkan ke permintaan HTTP. Saat Anda menguraikannya sebagai file, itu cocok dengan argumen ? dan & dari url, seperti di http://www.example.org/?param1=foo&param2=bar

Dalam kasus Anda, saat Anda mencari Bing, inilah daftar parameter yang dapat Anda temukan: https://docs.microsoft.com/en-us/rest/api/cognitiveservices/bing-web-api-v5-reference#query- parameter

Untuk mendapatkannya, Anda harus mengekstrak semua URL terlebih dahulu. Untuk itu Anda dapat menggunakan regex dan modul re bawaan Python. Cari yang bagus secara online, misalnya ini yang saya temukan untuk HTTP:

regex = r"/((([A-Za-z]{3,9}:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)/"

Kemudian Anda harus re.search(regex, decoded) lalu menggunakan groups() (lihat secara online :-) ) untuk menemukan semua URL. Setelah itu, Anda akan dapat split("&") untuk mendapatkan berbagai kata kunci.

Untuk 3) dan 4) Anda perlu menemukan jawaban dan permintaan HTTP berikutnya. Di sinilah tidak menerapkan parser pcap menjadi rumit, karena Anda perlu menebak di mana mereka berada di gumpalan teks Anda. Anda mungkin dapat mencari tag HTTP, seperti sebelum dan sesudah permintaan HTTP, tetapi itu berantakan.

0
Cukic0d 19 Maret 2019, 19:28