Коротко- код позволит определить, что ваш файл не является малварью судя по оценкам модели https://github.com/sophos/SOREL-20M
Берём белые файлы из C:\\Windows
Это все для 32bit (x86)
Проверяем
Берём грязные файлы
По хешу можете найти их на вирустотале
Чтобы это всё заработало вам нужен Python 3.6
Для него нужно пакеты ember, lightgbm ну и сама модель.
Модель можно скачать через aws cli
Грязные файлы для теста, да и для реверса
По .mmdb файлам (если вы проверил репозиторий на github можно думаю найти теги по хешам и реверсить лоадеры сколько душе угодно)
Не медли - может отреверсишь лучший лоадер за всё время.
Я лично ставил на conda + Pycharm. Версия питона 3.6 - не забывай.
Вот собственно и всё)
Берём белые файлы из C:\\Windows
Это все для 32bit (x86)
Проверяем
Берём грязные файлы
По хешу можете найти их на вирустотале
Чтобы это всё заработало вам нужен Python 3.6
Для него нужно пакеты ember, lightgbm ну и сама модель.
Модель можно скачать через aws cli
Код:
aws s3 cp s3://sorel-20m/09-DEC-2020/baselines/checkpoints/lightGBM/ . --recursive --no-sign-request
Грязные файлы для теста, да и для реверса
Код:
aws s3 cp s3://sorel-20m/09-DEC-2020/binaries/ . --no-sign-request --recursive
Не медли - может отреверсишь лучший лоадер за всё время.
Я лично ставил на conda + Pycharm. Версия питона 3.6 - не забывай.
Python:
import lightgbm as lgb
import numpy as np
from ember.ember import PEFeatureExtractor
import os
from colorama import Fore, Style
def read_file_to_bytes(file_path):
try:
with open(file_path, 'rb') as file:
return file.read()
except FileNotFoundError:
print(f"{Fore.RED}File '{file_path}' not found.{Style.RESET_ALL}")
except Exception as e:
print(f"{Fore.RED}An error occurred: {e}{Style.RESET_ALL}")
def analyze_file(file_path, model):
# Extract features from the file using the EMBER feature extractor
extractor = PEFeatureExtractor()
features = extractor.feature_vector(read_file_to_bytes(file_path))
# Reshape the features into a 2D array
features = np.array(features).reshape(1, -1)
# Make predictions using the loaded model
predictions = model.predict(features)
# Get the predicted probability of malware
malware_probability = predictions[0]
return malware_probability
def analyze_files_in_folder(folder_path, model):
# List all files in the folder
files = os.listdir(folder_path)
for file_name in files:
file_path = os.path.join(folder_path, file_name)
# Analyze each file in the folder
malware_probability = analyze_file(file_path, model)
# Print the result with coloring
if malware_probability >= 0.5:
print(f"{Fore.RED}The file '{file_path}' is likely malware with a probability of {malware_probability:.2f}{Style.RESET_ALL}")
else:
print(f"{Fore.GREEN}The file '{file_path}' is likely benign with a probability of {1 - malware_probability:.2f}{Style.RESET_ALL}")
def main():
# Specify the path to the pre-trained lightGBM model
model_path = r"E:\sorel\seed0\lightgbm.model"
# Load the pre-trained lightGBM model
model = lgb.Booster(model_file=model_path)
# Specify the path to the folder containing files for analysis
folder_path = r"C:\work\t\tt"
# Analyze files in the folder
analyze_files_in_folder(folder_path, model)
if __name__ == '__main__':
main()
Вот собственно и всё)