Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
cosa-nostra — Cosa Nostra, 그래프 기반 악성코드 클러스터링을 위한 FOSS 툴킷. | Kitploit
도구/GitHubGitHub/joxeankoret/cosa-nostra
Static AnalysisReverse EngineeringForensicsMalware AnalysisBinary AnalysisLearning & Education
GitHubjoxeankoret/cosa-nostra

cosa-nostra

Cosa Nostra, 그래프 기반 악성코드 클러스터링을 위한 FOSS 툴킷.

저장소 보기
231552년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Cosa Nostra

Cosa Nostra는 악성코드 분석에 초점을 맞춘 오픈 소스 소프트웨어 클러스터링 툴킷입니다. 구조적으로 유사한 바이너리 악성코드 샘플의 계통수를 생성할 수 있습니다. SyScan360 Shanghai (2016)에서 처음 공개되었습니다.

2016년부터 단 한 명의 사용자(다행히 친구입니다)를 위해 유지 관리하고 있습니다... 그냥 그러려니 하세요.

시작하기

필요한 타사 도구

Cosa Nostra를 사용하려면 Python 3.X 버전과 다음 도구 중 하나가 필요합니다(코드 분석 수행용).

  • IDA C++로 작성됨. 들어본 적도 없을 법한 다양한 실행 파일 유형을 분석할 수 있습니다. 상용 제품. 현재는 7.X 버전만 지원합니다.
  • Radare2 순수 C로 작성됨. IDA와 마찬가지로 매우 드문 CPU 및 바이너리 형식을 지원합니다. 또한 오픈 소스입니다!

바이너리 분석

앞서 언급한 도구 중 하나를 설치한 후에는 적절한 배치 도구를 사용하여 악성코드 샘플을 분석해야 합니다. 아래 예시와 같습니다.

root@kitploit:~
$ cd $COSA_NOSTRA_DIR
$ /path/to/ida64 -B -A -S/full/path/to/ida_batch.py example.exe

또는

root@kitploit:~
$ cd $COSA_NOSTRA_DIR
$ python r2_batch.py example.exe

악성코드 데이터셋 분석 자동화

악성코드 데이터셋을 분석하는 가장 쉬운 방법은 다음과 같은 명령어를 실행하는 것입니다.

root@kitploit:~
$ find /your/malware/dataset/path -type f -exec python r2_batch.py {} ';'

"GNU Parallel" 도구를 사용하여 병렬로 처리할 수도 있습니다. 다음 예시를 참고하세요.

root@kitploit:~
$ find /your/malware/dataset/path -type f | parallel -j 8 ida64 -B -A -S/path/to/ida_batch.py {}

위 예시에서는 총 8개의 pyew_batch 프로세스가 병렬로 실행됩니다.

데이터베이스 설정

악성코드 샘플을 분석한 후 분석에 성공하면 각 샘플의 호출 그래프 데이터가 기본적으로 "db.sqlite"라는 하나의 SQLite 데이터베이스에 저장됩니다. 데이터베이스 이름, 경로, 데이터베이스 시스템 등은 $COSA_NOSTRA_DIR/ 파일을 편집하여 설정할 수 있습니다. 아래와 같습니다.

root@kitploit:~
$ cat config.cfg 
########################################################################
# Configuration for SQLite3
########################################################################
[database]
dbn=sqlite
# Database name
db=db.sqlite

예를 들어 MySQL 데이터베이스 시스템을 사용하고 싶다면, config.cfg에 다음과 같은 설정 섹션을 적절한 값으로 넣어 설정할 수 있습니다.

root@kitploit:~
########################################################################
# Example configuration for MySQL
########################################################################

[database]
dbn=mysql
# Database hostname or IP address
host=localhost
# Database name
db=db_name
# Database username
user=username
# Database password
pw=password

악성코드 샘플의 클러스터화

이 단계는 가장 오래 걸리는 단계입니다. 데이터셋의 모든 악성코드 샘플을 분석하고, 호출 그래프 시그니처, 해당 소수 등이 계산되어 데이터베이스에 저장되면, 다음 단계는 클러스터를 찾는 것입니다. 이를 위한 도구는 "cn_clusterer.py"입니다. 동일한 데이터베이스 설정 파일($COSA_NOSTRA_DIR/config.cfg)을 사용하여 분석된 샘플의 호출 그래프 시그니처를 추출합니다. 실행 방법은 간단합니다.

root@kitploit:~
$ cd $COSA_NOSTRA_DIR
$ ./cn_clusterer.py
(...)
Calculating difference matrix for 2357, iteration 5540280 out of 7507600 (4858784 matches, 600144 cache misses)
Calculating difference matrix for 2354, iteration 5543020 out of 7507600 (4861293 matches, 600373 cache misses)
Calculating difference matrix for 471, iteration 5545760 out of 7507600 (4863903 matches, 600373 cache misses)
(...)
Making tree for group with 59 sample(s), iteration 0 out of 256
Making tree for group with 393 sample(s), iteration 1 out of 256
Making tree for group with 1347 sample(s), iteration 2 out of 256
(...)
[Wed Nov  2 13:37:12 2016 2830:140561185462080] Creating unnamed cluster...
[Wed Nov  2 13:37:12 2016 2830:140561185462080] Creating cluster with name u'Win.Trojan.Skylock-4'...
[Wed Nov  2 13:37:12 2016 2830:140561185462080] Creating cluster with name u'Win.Downloader.133181-1'...
[Wed Nov  2 13:37:12 2016 2830:140561185462080] Creating cluster with name u'Win.Trojan.Agent-1213378'...
[Wed Nov  2 13:37:13 2016 2830:140561185462080] Done processing phylogenetic trees!
[Wed Nov  2 13:37:13 2016 2830:140561185462080] Done

프로세스가 완료되면 분석된 악성코드 샘플을 그룹화하는 클러스터가 지정된 데이터베이스에 생성됩니다.

클러스터 보기: 웹 GUI

마지막 단계는 web.py 기반 웹 애플리케이션을 실행하고 로그인하는 것입니다.

root@kitploit:~
$ cd $COSA_NOSTRA_DIR
$ python cosa_nostra.py [optional port to listen to]
http://0.0.0.0:YOURPORT/

그런 다음 브라우저를 열고 cosa_nostra.py가 출력한 주소로 이동합니다. 사용자 이름과 비밀번호를 묻는 로그인 양식이 나타납니다. 기본값은 "admin/cosanostra"입니다. $COSA_NOSTRA_DIR/config.py 파일에서 변경할 수 있습니다.

root@kitploit:~
$ cat config.py
#!/usr/bin/env python

#-----------------------------------------------------------------------
# Configuration for Cosa Nostra
#-----------------------------------------------------------------------
DEBUG=False
CN_USER="admin"
# SHA1 hash of the password "cosanostra", change to the SHA1 hash of
# whatever password you prefer.
CN_PASS="048920dedfe36c112d74dc8108abb4db5185a918"
(...)

로그인하면 왼쪽 패널에서 다음 옵션 중 하나를 선택할 수 있습니다.

  • Samples: 현재 데이터베이스의 샘플을 확인합니다.
  • Clusters: Cosa Nostra가 지정된 데이터셋에서 찾은 클러스터 목록을 확인합니다.

"Clusters" 뷰에서는 다양한 클러스터를 선택하고 발견된 악성코드 패밀리의 계층 그래프를 볼 수 있습니다.

스크린샷

Cosa Nostra에 표시된 클러스터 목록:

List of clusters as shown in Cosa Nostra

Trojan.Backspace-1의 작은 클러스터 (ClamAV 명칭):

A small cluster of Trojan.Backspace-1, name by ClamAV

MiniDukes의 작은 클러스터:

A small cluster of MiniDukes

Kazy/Bifroses 클러스터:

A cluster of Kazy/Bifroses

FannyWorms의 매우 큰 클러스터 중 작은 부분:

A small part of a really big cluster of FannyWorms

도구 다운로드