- 파일 시그니처와 안티디버깅 방식을 사용한 랜섬웨어 및 어뷰징 방지 프로젝트.
Anti-Signature는 파일의 무결성을 검사하고, 랜섬웨어 감염을 탐지하며, 실행 파일에 대한 기본적인 안티-디버깅 기술을 적용하는 등 다양한 보안 기능을 제공하는 파이썬 기반의 커맨드 라인 도구입니다. 또한, 네트워크 트래픽을 모니터링하여 악성 패킷을 탐지하고 모든 활동을 데이터베이스에 기록하여 보고서를 생성할 수 있습니다.
- 파일 시그니처 검사: 파일의 실제 시그니처(매직 넘버)를 분석하여 확장자와 일치하는지 확인합니다.
- 파일 해시 무결성 검증: SHA-256 해시 값을 비교하여 파일이 변경되었는지 확인합니다.
- 랜섬웨어 탐지: 파일 이름과 확장자를 기반으로 알려진 랜섬웨어 패턴을 탐지합니다.
- 안티-디버깅: 실행 파일(PE, ELF)에 간단한 안티-디버깅 및 난독화 코드를 추가하거나 제거, 탐지할 수 있습니다.
- 카나리(Canary) 값 삽입: 파일 끝에 특정 값(카나리)을 삽입하여 파일 변조 여부를 손쉽게 확인할 수 있습니다.
- 네트워크 모니터링: 실시간으로 네트워크 패킷을 캡처하고, 사전에 정의된 악성 패턴과 비교하여 의심스러운 활동을 탐지합니다.
- 데이터베이스 로깅: 모든 검사 및 탐지 활동을 MySQL 또는 Oracle 데이터베이스에 기록합니다.
- 보고서 생성: 데이터베이스에 기록된 로그를 바탕으로
DOCX또는HTML형식의 분석 보고서를 생성합니다. - 파일 위장 및 복원: 파일 확장자를
.dll로 변경하여 실행을 방지하고, 필요시 원본 확장자로 복원합니다.
- Python 3.x
- pip (Python 패키지 설치 관리자)
- 프로젝트 클론 또는 다운로드
git clone [https://github.com/your-username/anti-signature.git](https://github.com/your-username/anti-signature.git) cd anti-signature - 필요한 Python 라이브러리 설치
pip install mysql-connector-python cx_Oracle scapy python-docx
이 프로젝트는 활동 로그를 저장하기 위해 MySQL 또는 Oracle 데이터베이스를 사용합니다.
signature데이터베이스를 생성합니다.- 아래 SQL 쿼리를 실행하여 필요한 테이블들을 생성합니다.
CREATE DATABASE signature;
USE signature;
CREATE TABLE operation_logs (
id INT AUTO_INCREMENT PRIMARY KEY,
operation VARCHAR(255) NOT NULL,
details TEXT,
status VARCHAR(50) NOT NULL,
timestamp DATETIME NOT NULL
);
CREATE TABLE file_integrity_logs (
id INT AUTO_INCREMENT PRIMARY KEY,
file_name VARCHAR(255) NOT NULL,
action VARCHAR(100) NOT NULL,
status VARCHAR(50) NOT NULL,
timestamp DATETIME NOT NULL
);
CREATE TABLE file_signature_logs (
id INT AUTO_INCREMENT PRIMARY KEY,
file_name VARCHAR(255) NOT NULL,
signature_before VARCHAR(255),
signature_after VARCHAR(255),
timestamp DATETIME NOT NULL
);
Anti-Signature는 터미널에서 커맨드 라인 인자(argument)를 통해 실행됩니다.
python main.py [OPTIONS]| 옵션 | 설명 |
|---|---|
| -f, --file | 검사할 파일 경로 지정. (예: -f file.pdf) 해시 값과 함께 지정 가능. (예: -f file.pdf:hash_value) |
| -R, --ransomware | 지정된 파일의 랜섬웨어 감염 여부 확인. |
| -replace | 파일 시그니처를 분석하여 올바른 확장자로 변경. |
| -D, --apply-debug | 파일에 안티-디버깅 기법 적용. |
| -dd, --detect-debug | 파일에 적용된 안티-디버깅 기법 탐지. |
| -dx, --remove-debug | 파일에서 안티-디버깅 기법 제거. |
| -net | 네트워크 모니터링 시작. (종료: Ctrl+C) |
| -c, --canary | 파일에 카나리 값을 삽입하여 변조 탐지 준비. |
| -ccheck | 파일의 카나리 값 무결성 검사. |
| -cd | 파일에서 카나리 값 제거. |
| -cp | 파일을 temp 폴더에 백업하고 확장자를 .dll로 변경하여 위장. |
| -db | 사용할 데이터베이스 선택. (mysql 또는 oracle) |
| -dbi | 파일 관련 작업 결과를 DB에 로그로 저장. |
| -report | DB 로그를 바탕으로 보고서 생성. (docx 또는 html) |
-
파일 무결성 및 랜섬웨어 감염 여부 동시 확인 python anti_signature.py -f "C:\Users\test\Desktop\document.docx" -R
-
파일 시그니처를 기반으로 확장자 자동 변경 python anti_signature.py -f "unknown_file" -replace
-
실행 파일에 안티-디버깅 적용 및 DB에 로그 기록 python anti_signature.py -f "program.exe" -D -db mysql -dbi
-
네트워크 트래픽 실시간 모니터링 python anti_signature.py -net
-
파일에 카나리 삽입 후, 무결성 검증
-
카나리 삽입 python anti_signature.py -f "important.dat" -c
-
이후 무결성 검사 python anti_signature.py -f "important.dat" -ccheck
-
-
DB 로그를 바탕으로 HTML 보고서 생성 python anti_signature.py -db mysql -report html