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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Kam1n0-Community — 여러 아키텍처에 걸쳐 정적, 동적 및 머신러닝 기법을 사용하는 인덱싱, 클론 검색 및 실행 파일 분류를 위한 확장 가능한 어셈블리 분석 플랫폼입니다. | Kitploit
도구/GitHubGitHub/mcgill-dmas/kam1n0-community
Vulnerability AnalysisCode AnalysisReverse EngineeringFuzzingBinary AnalysisMachine Learning
GitHubmcgill-dmas/kam1n0-community

Kam1n0-Community

여러 아키텍처에 걸쳐 정적, 동적 및 머신러닝 기법을 사용하는 인덱싱, 클론 검색 및 실행 파일 분류를 위한 확장 가능한 어셈블리 분석 플랫폼입니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Kam1n0 v2란 무엇인가?

image GitHub (pre-)release Github All Releases JDK PRs Welcome

Build latest development release (Windows) Test release build (Windows)

Kam1n0 v2.x는 확장 가능한 어셈블리 관리 및 분석 플랫폼입니다. 사용자는 먼저 (대량의) 바이너리 모음을 다양한 저장소로 인덱싱하고 클론 검색 및 분류와 같은 다양한 분석 서비스를 제공할 수 있습니다. 애플리케이션 개념을 사용하여 어셈블리 저장소의 다중 테넌트 액세스 및 관리를 지원합니다. 애플리케이션 인스턴스는 고유한 전용 저장소를 포함하며 특화된 분석 서비스를 제공합니다. 리버스 엔지니어링 작업의 다양성을 고려하여, Kam1n0 v2.x 서버는 현재 세 가지 유형의 클론 검색 애플리케이션을 제공합니다: Asm-Clone, Sym1n0, Asm2Vec, 그리고 Asm2Vec 기반의 실행 파일 분류. 새로운 애플리케이션 유형을 플랫폼에 추가할 수 있습니다.

사용자는 여러 애플리케이션 인스턴스를 생성할 수 있습니다. 애플리케이션 인스턴스는 특정 사용자 그룹 간에 공유될 수 있습니다. 애플리케이션 저장소의 읽기-쓰기 액세스 및 온-오프 상태는 애플리케이션 소유자가 제어할 수 있습니다. Kam1n0 v2.x 서버는 여러 공유 리소스 풀을 사용하여 애플리케이션을 동시에 서비스할 수 있습니다.

Kam1n0는 캐나다 McGill 대학의 Data Mining and Security Lab 소속인 Benjamin C. M. Fung 교수의 지도 하에 Steven H. H. Ding과 Miles Q. Li가 개발했습니다. Hex-Rays Plug-In Contest 2015에서 2등을 수상했습니다. Kam1n0가 유용하다고 생각하신다면, 다음 논문을 인용해 주십시오:

  • S. H. H. Ding, B. C. M. Fung, and P. Charland. Kam1n0: MapReduce-based Assembly Clone Search for Reverse Engineering. In Proceedings of the 22nd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (SIGKDD), pages 461-470, San Francisco, CA: ACM Press, August 2016.

  • S. H. H. Ding, B. C. M. Fung, and P. Charland. Asm2Vec: boosting static representation robustness for binary clone search against code obfuscation and compiler optimization. In Proceedings of the 40th IEEE Symposium on Security and Privacy (S&P), 18 pages, San Francisco, CA: IEEE Computer Society, May 2019.

Asm-Clone

Asm-Clone 애플리케이션은 어셈블리 함수에 대한 효율적인 부분 그래프 검색 문제(즉, 그래프 동형 문제)를 해결하려고 합니다(230만 개 함수 기준 평균 쿼리 시간 <1.3초, 평균 인덱스 시간 <30ms). 대상 함수(아래 왼쪽에 표시됨)가 주어지면 저장소의 다른 함수들 중에서 클론된 부분 그래프를 식별할 수 있습니다(아래 오른쪽에 표시됨).

  • 애플리케이션 유형: Asm-Clone
  • Kam1n0 v1.x에서 사용된 원래 클론 검색 서비스입니다.
  • 현재 Meta-PC, ARM, PowerPC, TMS320c6(실험적)을 지원합니다.
  • 특정 어셈블리 코드 패밀리 내에서 부분 그래프 클론 검색을 지원합니다.
    • + 결과 해석 가능성 우수: 부분 그래프로 분해됩니다.
    • + 주어진 코드 패밀리 내 검색에 정확합니다.
    • + 대형 바이너리의 다양한 패치 또는 버전 비교에 유용합니다.
    • - 명령어 세트 변경, 최적화 및 난독화에 상대적으로 민감합니다.
    • - 어셈블리 코드 언어의 구문을 미리 정의해야 합니다.
    • - 저장소에 동일한 선택된 패밀리의 어셈블리 코드가 있어야 합니다.

Sym1n0

차별화된 퍼지 테스팅과 제약 조건 해결을 통한 의미론적 클론 검색. 효율적이고 확장 가능한 동적-정적 하이브리드 접근 방식입니다(150만 개 함수 기준 평균 쿼리 시간 <1초, 평균 인덱스 시간 <100ms). 대상 함수(아래 왼쪽에 표시됨)가 주어지면 저장소의 다른 함수들 중에서 클론된 부분 그래프를 식별할 수 있습니다(아래 오른쪽에 표시됨). 추상 구문 그래프 시각화를 지원합니다.

  • 애플리케이션 유형: Sym1n0 (v2 전용)
  • 기호 실행과 구체적 실행을 모두 사용한 클론 검색.
  • I/O 동작의 차이를 기반으로 함수를 구분합니다.
  • LibVex(기반 Vex IR에서 구축된 추상 구문 그래프)로 클론 검색을 수행합니다.
    • + 여러 어셈블리 코드 패밀리 간의 클론 검색.
      • 예: x86 바이너리를 인덱싱했지만 쿼리는 ARM 코드인 경우.
    • + 부분 그래프 클론 검색.
    • + LibVex를 통해 광범위한 패밀리 지원.
      • x86, AMD64, MIPS32, MIPS64, PowerPC32, PowerPC64, ARM32, ARM64.
    • + 효율적인 동적-정적 하이브리드 접근 방식.
    • + 다른 프로세서용으로 컴파일된 펌웨어 분석에 이상적입니다.
    • - 과도한 그래프 조작(예: 완전 평탄화)에 민감합니다.
    • - 기본 블록 무결성의 대규모 붕괴에 민감합니다.

Asm2Vec

Asm2Vec은 표현 학습을 활용합니다. 어셈블리 코드의 어휘적 의미 관계를 이해합니다. 예를 들어, xmm* 레지스터는 addps와 같은 벡터 연산과 의미적으로 관련됩니다. memcpy는 strcpy와 유사합니다. 아래 그래프는 libgmp의 gmpz_tdiv_r_2exp 동일한 소스 코드에서 컴파일된 다양한 어셈블리 함수를 보여줍니다. 왼쪽부터 GCC O0 옵션, GCC O3 옵션, O-LLVM 난독화기 제어 흐름 그래프 평탄화 옵션, LLVM 난독화기 가짜 제어 흐름 그래프 옵션으로 컴파일된 어셈블리 함수입니다. Asm2Vec은 이를 정적으로 클론으로 식별할 수 있습니다.

  • 표현 학습을 활용합니다.
  • 어셈블리 코드의 어휘적 의미 관계를 이해합니다.
    • + 강력한 코드 난독화 기술에 대한 최첨단 클론 검색.
      • (O-LLVM의 모든 옵션, 다회 반복 시 정확도 >0.8).
    • + 코드 최적화에 대한 최첨단 클론 검색.
      • (O0과 O3 간 정확도 >0.8, O2와 O3 간 정확도 >0.94)
    • + 최근 동적 접근 방식보다 더 나은 결과를 제공합니다.
    • + 최근 동적 접근 방식보다 훨씬 효율적입니다.
    • + 아키텍처를 정의할 필요 없이 대량의 코드를 읽고 자가 학습합니다.
    • + 정적 접근 방식: 효율적이고 확장 가능합니다.
    • - 부분 그래프 없음.
    • - 어셈블리 코드가 동일한 프로세서 패밀리에서 제공된다고 가정합니다.
    • - 정적 접근 방식: 점프 테이블 등을 인식할 수 없습니다.

실행 파일 분류

이 애플리케이션에서 사용자는 기능적 관련성을 기반으로 한 소프트웨어 클래스 집합을 정의하고 각 클래스에 속하는 바이너리를 제공합니다. 그러면 시스템이 자동으로 함수를 클러스터로 그룹화하며, 클러스터 내 함수는 클론 관계로 직간접적으로 연결됩니다. 분류에 판별적인 클러스터는 유지되어 해당 클래스의 서명 역할을 합니다. 대상 바이너리가 주어지면 시스템이 각 소프트웨어 클래스에 속하는 정도를 보여줍니다.

  • 함수 유사도 계산 모델로 Asm2Vec 사용

    • + 해석 가능한 분류 결과 제공.
    • + 각 클래스의 공통 특성(즉, 함수 클러스터) 학습.
    • + 일반적인 머신러닝 모델보다 작고 불균형한 데이터셋을 처리 가능.
    • - 한계는 시스템이 작동하려면 동일한 클래스의 바이너리에 공통 함수가 존재한다는 가정이 충족되어야 한다는 점입니다.

플랫폼 개요

아래 그림은 Kam1n0 v2.x의 주요 UI 구성 요소와 기능을 보여줍니다. 우리는 머티리얼 디자인을 채택했습니다. 일반적으로 각 사용자는 애플리케이션 목록, 실행 중인 작업 목록, 결과 파일 목록을 가지고 있습니다.

  • 애플리케이션 목록은 사용자가 소유하고 다른 사용자가 공유하는 애플리케이션 인스턴스를 보여줍니다.
  • 실행 중인 작업 목록은 대규모 쿼리(예: chrome.dll) 및 인덱싱 절차의 진행 상황을 보여줍니다.
  • 결과 파일 목록은 저장된 결과를 표시합니다. UI 디자인에 대한 자세한 내용은 상세한 튜토리얼에서 확인할 수 있습니다.

설치 지침

현재 Kam1n0 릴리스는 두 가지 설치 프로그램으로 구성됩니다: 코어 서버와 IDA Pro 플러그인.

Kam1n0 서버 설치

Kam1n0 코어 엔진은 순수 Java로 작성되었습니다. 다음 종속성이 필요합니다:

  • [필수] Oracle의 최신 x64 11.x JRE/JDK 배포판.
  • [선택 사항] idapython 플러그인이 설치된 최신 버전의 IDA Pro. Python 플러그인 및 런타임은 IDA Pro와 함께 이미 설치되어 있어야 합니다. 필요한 경우 IDA Pro를 다시 설치하십시오.

릴리스 페이지에서 Kam1n0-Server.msi 파일을 다운로드하십시오. 지침에 따라 서버를 설치하십시오. 설치 경로를 선택하라는 메시지가 표시됩니다. 서버가 디스어셈블을 처리할 필요가 없는 경우 IDA Pro는 선택 사항입니다. 즉, 클라이언트 측에서 IDA Pro용 Kam1n0 플러그인을 사용합니다. Kam1n0 서버와 함께 IDA Pro를 설치하는 것이 좋습니다. Kam1n0 서버는 .i64 파일을 여는 데 사용하는 기본 애플리케이션을 찾아 IDA Pro를 자동으로 감지합니다.

IDA Pro 플러그인 설치

Kam1n0 IDA Pro 플러그인은 로직 부분은 Python으로, 렌더링 부분은 HTML/JavaScript로 작성되었습니다. 설치를 위해 다음 종속성이 필요합니다:

  • [필수] idapython 플러그인이 설치된 IDA Pro (>6.7). Python 플러그인 및 런타임은 IDA Pro와 함께 이미 설치되어 있어야 합니다. 필요한 경우 IDA Pro를 다시 설치하십시오.

다음으로 릴리스 페이지에서 Kam1n0-IDA-Plugin.msi 설치 프로그램을 다운로드하십시오. 지침에 따라 플러그인과 런타임을 설치하십시오. 플러그인은 $IDA_PRO_PATH$/plugins에 있는 IDA Pro 플러그인 폴더에 설치되어야 합니다. 예를 들어 Windows에서 경로는 C:/Program Files (x86)/IDA 6.95/plugins일 수 있습니다. 설치 프로그램이 경로를 감지하고 확인합니다.

Ubuntu/Debian 기반 시스템에 Kam1n0 설정

  • Oracle 버전의 Java 11이 있는지 확인하십시오. (apt의 default-jdk가 아닙니다.)

    • Oracle의 PPA를 추가한 다음 패키지 저장소를 업데이트하십시오: sudo add-apt-repository ppa:webupd8team/java
      • 오류가 발생하면(예: ~webupd8team not found), 프록시를 사용 중이라면 http_proxy 및 https_proxy 환경 변수를 설정하고 내보낸 후 sudo에 -E 옵션을 사용하여 다시 시도하십시오. 또한 'add-apt repository command not found' 오류가 발생하면 sudo apt install -y software-properties-common을 시도하십시오.
    • 그런 다음: sudo apt-get update, sudo apt-get install oracle-java8-installer
      • java -version으로 Java 버전을 확인하십시오. JAVA_HOME 환경 변수(/etc/environment에서)를 수동으로 설정해야 할 수 있습니다. JAVA_HOME=/usr/lib/jvm/java-11-oracle

이전 버전과의 호환성

이전 버전(<2.0.0)에서 사용된 어셈블리 코드 저장소 및 구성 파일은 최신 버전에서 더 이상 지원되지 않습니다. 이전 저장소를 마이그레이션해야 하는 경우 당사에 문의하십시오.

문서

  • Kam1n0 서버 튜토리얼
    • 구성 및 엔진 시작
    • 계정 등록 및 로그인
    • 애플리케이션 생성
    • 애플리케이션 공유 및 액세스 제어
    • 데이터 준비
    • IDA Pro 플러그인용 애플리케이션 URL
    • 바이너리 파일 인덱싱
    • 어셈블리 함수로 검색
      • 흐름 그래프 보기
      • 텍스트 차이 보기
      • 클론 그룹 보기
    • 바이너리 파일로 검색
    • 클론 검색 결과 탐색
      • 요약 상자
      • 세부 정보

개발

최신 안정 브랜치를 클론하세요(--recursive 잊지 마세요!):```bash git clone --recursive -b master2.x --single-branch https://github.com/McGill-DMaS/Kam1n0-Community

root@kitploit:~
## 프로젝트 가져오기.
IntelliJ: 루트 /kam1n0/kam1n0/를 메이븐 프로젝트로 가져옵니다. 모든 서브모듈이 그에 따라 로드됩니다.
EclipseEE: 클론한 git 저장소를 git 뷰에 추가합니다. git 저장소에서 모든 메이븐 프로젝트를 가져옵니다.
오류를 해결하기 위해 클래스패스를 수정해야 할 수도 있습니다.
IDE 내에서 실행할 때 모든 리소스 경로는 동적으로 수정됩니다
(kam1n0-resources 서브모듈을 통해).

프로젝트를 빌드하려면:```
cd /kam1n0/kam1n0
mvn -DskipTests clean package
mvn -DskipTests package

결과 바이너리는 /kam1n0/build-bins/에서 찾을 수 있습니다.

테스트 코드를 실행하려면 먼저 http://chromedriver.chromium.org/에서 chromedriver.exe를 다운로드하고 해당 파일의 절대 경로를 webdriver.chrome.driver라는 환경 변수에 추가해야 합니다. 또한 시스템에 Chrome 브라우저가 설치되어 있어야 합니다. 테스트 코드는 브라우저 인스턴스를 실행하여 UI 인터페이스를 테스트합니다. 전체 테스트 절차는 약 3시간이 소요됩니다.``` cd /kam1n0/kam1n0 mvn -DskipTests clean package # you can skip this one if you already built the package mvn -DskipTests package # you can skip this one if you already built the package mvn -DforkMode=never test

root@kitploit:~
These commands only compiles java with pre-compiled wheels of libvex and z3. It works out-of-the-box.
The build of libvex and z3 is platform-dependent. We use a fork of libvex from Angr.
More serious build scripts as well as installers for windows/linux can be found under /kam1n0-builds/

* kam1n0: 서버의 소스 코드.
* kam1n0-builds: 설치 프로그램 소스 코드 및 배포판 빌드 스크립트.
* kam1n0-clients: 클라이언트의 소스 코드.

## 바이너리 릴리스

지속적인 개발 및 제공을 위한 Jenkin 서버가 있습니다. 최신 안정 릴리스는 여기에 게시됩니다. 주기적으로 내부 실험 브랜치를 이 저장소와 동기화할 것입니다.

## 라이선스

이 소프트웨어는 [Steven H. H. Ding](http://stevending.net/), [Miles Q. Li](http://milesqli.github.io/), [Benjamin C. M. Fung](http://dmas.lab.mcgill.ca/fung/)이 캐나다의 [McGill Data Mining and Security Lab](http://dmas.lab.mcgill.ca/) 및 [Queen's L1NNA Research Laboratory](https://l1nna.com/)에서 개발했습니다. Apache License Version 2.0에 따라 배포됩니다. 자세한 내용은 [LICENSE.txt](https://github.com/mcgill-dmas/kam1n0-community/blob/HEAD/LICENSE.txt)를 참조하세요.

Copyright 2014-2021 McGill University and the Researchers. All rights reserved.

## 감사의 말

![image](https://img.shields.io/badge/Proudly%20Funded%20by-Defence%20Research%20&%20Development%20Canada%20(DRDC)-orange.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Proudly%20Funded%20by-NSERC%20Canada%20Research%20%20Chairs%20Program-blue.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Special%20thanks%20to-Philippe%20Charland,%20DRDC-orange.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Acknowledgement-NVIDIA%20Corporation%20for%20donating%20the%20Titan%20Xp%20used%20for%20this%20research-blue.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Built%20in-Data%20Mining%20and%20Security%20Lab,%20SIS,%20McGill%20Univrsity-red.svg?style=for-the-badge)

![image](https://img.shields.io/badge/Built%20in-L1NNA%20Research%20Laboratory,%20CS,%20Queen%27s%20Univrsity-red.svg?style=for-the-badge)
도구 다운로드
설치 프로그램포함된 구성 요소설명
Kam1n0-Server.msi코어 엔진인덱싱 및 검색 서비스를 제공하는 메인 엔진.
워크벤치저장소 및 실행 중인 서비스를 관리하기 위한 사용자 인터페이스.
웹 사용자 인터페이스바이너리 파일 및 어셈블리 함수를 검색/인덱싱하기 위한 웹 사용자 인터페이스.
Visual C++ 재배포 가능 패키지 (VS 15)z3 종속성.
Kam1n0-IDA-Plugin.msi플러그인커넥터 및 사용자 인터페이스.
Cefpython용 PyPI 휠사용자 인터페이스용 렌더링 엔진.
PyPI 및 종속 휠Python용 패키지 관리. IDA 6.8 및 6.9 용으로 포함됨.
  • Kam1n0-Community에서 최신 Linux 릴리스(Kam1n0-IDA-Plugin.tar.gz 및 Kam1n0-Server.tar.gz)를 다운로드하십시오.

  • 두 개의 tarball을 추출하십시오(예: tar –xvzf Kam1n0-IDA-Plugin.tar.gz 및 tar –xvzf Kam1n0-Server.tar.gz)

  • Kam1n0-Server.tar.gz 파일은 서버 디렉터리를 생성합니다.

  • server 디렉터리 안에 kam1n0.properties라는 파일이 있어야 합니다. 여기서 kam1n0의 다양한 구성을 설정합니다. 매우 중요합니다.

  • kam1n0.data.path를 kam1n0 관련 데이터를 기록할 위치로 설정하십시오. 우리는 서버와 동일한 위치에 두는 것을 선택합니다. kam1n0.ida.home은 IDA 설치 위치를 나타냅니다. IDA가 없고 디스어셈블리에 kam1n0를 사용하지 않을 경우 이 줄(및 다음 줄 kam1n0.ida.batch)을 주석 처리하십시오. kam1n0.properties 파일에 대한 더 정확한 정보는 kam1n0.properties.explained 파일을 참조하십시오.

  • kam1n0-server-workbench 실행: java -jar kam1n0-server-workbench.jar. 이렇게 하면 창이 나타나면서 실제로 kam1n0를 시작하라는 메시지가 표시됩니다. 또는 kam1n0-server 실행: java -jar kam1n0-server.jar --start. 이렇게 하면 창 없이 콘솔에서 서버가 시작됩니다.

  • 연결하여 사용하려면 브라우저에서 127.0.0.1:8571(기본 포트는 8571이지만 kam1n0.properties에서 변경 가능)로 이동하십시오. 깔끔한 kam1n0 웹 UI가 표시됩니다. 사용 방법을 모르는 경우 Kam1n0-Community 저장소의 튜토리얼을 따르십시오.

  • IDA Pro 플러그인 튜토리얼
    • 기능
    • 예제 따라하기
      • 데이터 준비
      • 엔진 시작 및 애플리케이션 URL
      • 연결 구성
      • 플러그인에서 인덱싱
      • 함수 검색
      • 구성 분석
      • 어셈블리 조각 검색
      • 검색 상자
    • 플러그인 작동 방식
      • 사용자 인터페이스
      • 동기화
      • 양방향 통신