BƯỚC 1, THU THẬP FIRMWARE TỪ CÁC NHÀ CUNG CẤP

Một phần của tài liệu (LUẬN văn THẠC sĩ) phương pháp phát hiện mã độc trong firmware của các thiết bị định tuyến và ứng dụng (Trang 39 - 42)

thông qua mô phỏng

Nội dung các bước được mô tả chi tiết ở các mục sau.

3.2. BƯỚC 1, THU THẬP FIRMWARE TỪ CÁC NHÀ CUNG CẤP THIẾT BỊ ĐỊNH TUYẾN THIẾT BỊ ĐỊNH TUYẾN

Ở bước đầu tiên, tiến hành thực hiện việc thu thập firmware từ website của các nhà cung cấp thiết bị định tuyến như: TP-link, D-link, Linksys…Do số lượng firmware được các nhà phân phối cung cấp quá lớn, không thể tải về một cách thủ công nên cần sử dụng một chương trình viết bằng ngôn ngữ lập trình Python để tự động hóa việc tải firmware.

Hai nguồn chính trong việc thu thập firmware bao gồm:

- Các website của nhà phân phối như: D-link, Belkin, Xerox, Tp-link, Asus…

- Các trang tin FTP chuyên dụng trong việc tìm kiếm và thu thập địa chỉ URL chứa firmware dựa vào từ khóa các nhà phân phối để tải về.

Các tập tin khi tải về thường được nén bằng các chuẩn khác nhau. Chính vì vậy, cần phải giải nén để tiến hành trích chọn mã nguồn nhị phân là firmware thực sự. Tải Firmware từ Internet Bóc tách Firmware (FMK hoặc Binwalk) Mô phỏng Firmware

dựa trên QEMU đã cài các công cụ giám

sát Thực thi các ứng dụng

trên Firmware và phân tích kết quả giám sát Internet Firmware Kết quả Bước 1 Bước 3

Thực hiện tải và giải nén firmware

- Lập trình chương trình download.py có tính năng tự động tải tập tin firmware và giải nén tập tin:

from os.path import basename import os

#from urlparse import urlsplit

import urllib.parse

#import urllib2

import urllib.request

from urllib.request import urlopen import tarfile

import pyunpack import zipfile import rarfile

def download(url, out_path):

response = urlopen(url)

localName = basename(response.url)

urllib.request.urlretrieve(url, out_path + localName)

print("-->Tai thanh cong tap tin tu url: " + url) return localName

for urlFile in open('data.txt'):

print("Tai tap tin tu url: " + urlFile) nameFile = download(urlFile, './') outFolder = nameFile[:-4] os.mkdir('./' + outFolder + '/') if zipfile.is_zipfile(nameFile): zip = zipfile.ZipFile(nameFile) zip.extractall('./' + outFolder) elif tarfile.is_tarfile(nameFile): tar = tarfile.open(nameFile) tar.extractall('./' + outFolder) elif rarfile.is_rarfile(nameFile): rar = rarfile.RarFile(nameFile) rar.extractall('./' + outFolder)

print("-->Giai nen thanh cong tap tin: " + nameFile)

- Tạo tập tin data.txt chứa các đường link tải tập tin firmware, ví dụ: https://ftp.dlink.ru/pub/NAS/DNS- 320/Firmware/DLINK_DNS320.2.05b10(2.13.0226.2016).zip https://ftp.dlink.ru/pub/NAS/DNS-320/Firmware/DNS- 320_A1_FW_v2.00.rar https://ftp.dlink.ru/pub/NAS/DNS-320/Firmware/DNS- 320_A2_FW_v2.03b03.rar https://ftp.dlink.ru/pub/NAS/DNS-320/Firmware/DNS- 320_A2_FW_v2.05b08.zip ………

Các tập tin firmware được tải về và được giải nén:

Một phần của tài liệu (LUẬN văn THẠC sĩ) phương pháp phát hiện mã độc trong firmware của các thiết bị định tuyến và ứng dụng (Trang 39 - 42)

Tải bản đầy đủ (PDF)

(60 trang)