파이썬 악성코드 분석

Nov 28 2022
맬웨어 분석을 위해 코드는 다음을 수행합니다. 해시 정보가 추출됩니다. 파일 크기가 인쇄 중입니다.
Unsplash의 Michael Geiger 사진

맬웨어 분석을 위해 코드는 다음을 수행합니다.

해시 정보가 추출됩니다.

파일 크기가 인쇄 중입니다.

해시 정보는 Alienvault OTX에서 확인됩니다.

파일의 문자열 출력이 인쇄됩니다.

PE 파일 헤더에 포함된 많은 정보와 모든 장의 세부 정보 및 데이터에 액세스할 수 있습니다.

Hex 편집기 출력을 얻습니다.

맬웨어 분석 도구의 작동 방식을 검사하려면 아래 코드를 검토할 수 있습니다.

import pefile
from OTXv2 import OTXv2
import hashlib
import IndicatorTypes
import string
import binascii
import os
API_KEY = ""
filename=""
def hex_editor(filename):
    list_editor=""
    data_list=[]
    full_list=""
    counter=0
    try:
        with open(filename, "rb") as file:
            while 1:
                byte_s = file.read(1)
                data_bytes2ascii = binascii.b2a_hex(byte_s)
                list_editor+=str(data_bytes2ascii, 'UTF-8')+"\t"
                data_list.append(int(str(data_bytes2ascii, 'UTF-8'),16))
                full_list+= str(data_bytes2ascii, 'UTF-8') + " "
                if counter == 16:
                    print(list_editor)
                    print("\t".join(map(chr, data_list)))
                    counter=0
                    list_editor=""
                    data_list=[]
                    full_list+=str(data_bytes2ascii, 'UTF-8')+"\n"
                if not byte_s:
                    break
                counter+=1
    except:
        pass
    print("="*30)
    print(full_list)
def strings(filename, min=8):
    with open(filename, errors="ignore") as file:
        result = ""
        for character in file.read():
            if character in string.printable:
                result += character
                continue
            if len(result) >= min:
                yield result
            result = ""
        if len(result) >= min:
            yield result
size = os.path.getsize(filename)
print("File size:",size)
file=pefile.PE(filename)
print("File hashes:")
with open(filename, mode="rb") as File:
    hash_256 = hashlib.sha256(File.read()).hexdigest()
    hash_md5 = hashlib.md5(File.read()).hexdigest()
    hash_sha1 = hashlib.sha1(File.read()).hexdigest()
    print("MD5:",hash_md5)
    print("SAH-256",hash_256)
    print("SHA-1",hash_sha1)
print("Imphash:",file.get_imphash())
for dll in file.DIRECTORY_ENTRY_IMPORT:
    print(dll)
    for functions in dll.imports:
        print(functions.name)
print(file)
otx = OTXv2(API_KEY, server='https://otx.alienvault.com/')
result = otx.get_indicator_details_full(IndicatorTypes.FILE_HASH_MD5, hash_md5)
print("Alienvault Result:\n",result)
print("String Result:")
for string_line in strings(filename):
    print(string_line)
print("File Hex Editor:")
try:
    hex_editor(filename)
except:
    pass

https://twitter.com/anilyelken06
https://github.com/anil-yelken
https://anilyelken.medium.com/
https://medium.com/sibergvenlik

Infosec Writeups에서: 매일 Infosec에서 따라잡기 힘든 많은 일들이 일어나고 있습니다. 주간 뉴스레터 에 가입하여 5개의 기사, 4개의 스레드, 3개의 비디오, 2개의 GitHub Repos 및 도구, 1개의 작업 알림 형식으로 모든 최신 Infosec 동향을 무료로 받아보세요!