Немного кликбейт, но все же.
Нам пригодится файл из https://github.com/sophos/SOREL-20M который зовется meta.mmdb
Это sql база
Она лежит на aws в папке processed-data
Скачать можно
Открыв бд увидим
Дальше нужно сформировать список хешей по меткам
Хорошо, файлы мы сделали
Много хешей. Не так ли? Одних дропперов там ~3.5 миллиона
Теперь нужно эти файлики скачать на ПК
Лучше автоматизировать
Окей, на этом всё? Нет!
Скачанные файлы еще нельзя открывать в IDA PRO или другой смежной прожке.
Их нужно еще разархивировать из zlib формата.
Снова питухон) Юзаем скрипт
На этом все)
Смотри файлик в иде
Чтобы запустить нужно жать окей. потому что файлы обезвредили затерев заголовок
hex rays работает)
Нам пригодится файл из https://github.com/sophos/SOREL-20M который зовется meta.mmdb
Это sql база
Она лежит на aws в папке processed-data
Скачать можно
Код:
aws s3 cp s3://sorel-20m/09-DEC-2020/processed-data/meta.db . --no-sign-request
Дальше нужно сформировать список хешей по меткам
Python:
import sqlite3
# Подключение к базе данных SQLite
conn = sqlite3.connect(r"путь к бд\meta.db")
cursor = conn.cursor()
# Список меток для извлечения
labels = ['dropper', 'installer', 'downloader']
# Извлечение данных и сохранение в файлы
for label in labels:
# Выполнение запроса к базе данных с сортировкой
query = f"SELECT sha256, {label} FROM meta WHERE {label} >= 1 ORDER BY {label} DESC"
cursor.execute(query)
# Получение результатов запроса
results = cursor.fetchall()
# Сохранение результатов в файл
filename = f"{label}.txt"
with open(filename, 'w') as file:
for row in results:
sha256 = row[0]
label_value = row[1]
file.write(f"{sha256}\n")
print(f"Значения sha256 с меткой '{label}' сохранены в файл '{filename}' в порядке убывания значений метки.")
# Закрытие соединения с базой данных
conn.close()
Хорошо, файлы мы сделали
Много хешей. Не так ли? Одних дропперов там ~3.5 миллиона
Теперь нужно эти файлики скачать на ПК
Лучше автоматизировать
Python:
import os
import subprocess
def download_files_from_s3(hash_file, download_folder):
# Создание папки для скачивания, если она не существует
os.makedirs(download_folder, exist_ok=True)
with open(hash_file, 'r') as file:
hashes = file.read().splitlines()
for hash_value in hashes:
s3_path = f"s3://sorel-20m/09-DEC-2020/binaries/{hash_value}"
local_path = f"{download_folder}/{hash_value}"
command = f"aws s3 cp \"{s3_path}\" \"{local_path}\" --no-sign-request"
subprocess.run(command, shell=True)
print("File download completed.")
# Specify the path to the text file containing the hashes
hash_file = 'hashes.txt'
# Specify the folder where you want to download the files
download_folder = r'путь к папке\downloaded-aws'
# Download the files based on the hashes
download_files_from_s3(hash_file, download_folder)
Окей, на этом всё? Нет!
Скачанные файлы еще нельзя открывать в IDA PRO или другой смежной прожке.
Их нужно еще разархивировать из zlib формата.
Снова питухон) Юзаем скрипт
Python:
import os
import zlib
import argparse
def extract_zlib_file(input_file, output_dir):
with open(input_file, 'rb') as f_in:
compressed_data = f_in.read()
decompressed_data = zlib.decompress(compressed_data)
output_file_path = os.path.join(output_dir, os.path.basename(input_file))
with open(output_file_path, 'wb') as f_out:
f_out.write(decompressed_data)
def main(input_dir, output_dir):
if not os.path.exists(output_dir):
os.makedirs(output_dir)
for file_name in os.listdir(input_dir):
input_file_path = os.path.join(input_dir, file_name)
extract_zlib_file(input_file_path, output_dir)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Extract zlib files from input directory to output directory")
parser.add_argument("input_dir", help="Input directory containing zlib files")
parser.add_argument("output_dir", help="Output directory where extracted files will be stored")
args = parser.parse_args()
main(args.input_dir, args.output_dir)
На этом все)
Смотри файлик в иде
Чтобы запустить нужно жать окей. потому что файлы обезвредили затерев заголовок
hex rays работает)