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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
inhale — 악성코드 분석 및 분류 도구입니다. | Kitploit
도구/GitHubGitHub/netspooky/inhale
Static AnalysisHash AnalysisForensicsInformation GatheringMalware AnalysisBinary Analysis
GitHubnetspooky/inhale

inhale

악성코드 분석 및 분류 도구입니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Inhale - 악성코드 흡입기

Inhale은 정적 분석 작업을 자동화하고 확장할 수 있는 악성코드 분석 및 분류 도구입니다.

이것은 베타 릴리스 버전으로, 테스트 목적, 피드백 및 커뮤니티 개발을 위한 것입니다.

배경

Inhale은 다양한 소스에서 대량의 악성코드를 수집하고 분석할 때 사용했던 작은 스크립트 모음에서 시작되었습니다. 비슷한 작업을 수행하는 프레임워크와 도구는 많지만, 많은 파일에 대한 정보를 신속하게 찾고, 분류하고, 저장하는 제 작업 흐름에 맞는 것은 없었습니다. 일부는 비싼 API 키와 비용이 드는 기타 서비스가 필요하기도 했습니다. 결국 이 스크립트들을 연구 서버, 노트북, 또는 Raspberry Pi 같은 저비용 컴퓨터에서도 빠르게 설정하고 사용할 수 있는 무언가로 만들었습니다.

설치

이 도구는 Linux에서 Python3, ElasticSearch, radare2, yara 및 binwalk를 사용하여 실행되도록 제작되었습니다. jq는 데이터베이스 출력을 예쁘게 출력하는 데 필요합니다. 기본 설치 지침은 다음과 같습니다.

config.yml 파일에 아직 실제로 설정되지 않은 여러 항목들이 있습니다. 이 문서에서 달리 명시되지 않는 한 그대로 두십시오.

Python3

요구 사항 설치

python3 -m pip install -r requirements.txt

ElasticSearch 설치 (Debian)

데이터베이스는 Inhale을 사용하는 데 필수는 아니지만, 설정을 원한다면 다음 지침을 따르고 config.yml 옵션 'enable_database'를 True로 설정하십시오.

문서

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update && sudo apt-get install elasticsearch
sudo service elasticsearch start

또한 이 문서를 따라 수동으로 설치할 수 있습니다.

또한 시각화 및 데이터 분석 목적으로 전체 ELK 스택을 설정할 수 있습니다. 이 도구를 사용하는 데 필수는 아닙니다.

radare2 설치

radare2를 패키지 관리자가 아닌 저장소에서 설치하는 것이 중요합니다. 패키지 관리자 버전은 inhale에 필요한 모든 기능을 제공하지 않습니다.

git clone https://github.com/radare/radare2
cd radare2
sys/install.sh

Yara 설치

문서

sudo apt-get install automake libtool make gcc
wget https://github.com/VirusTotal/yara/archive/v3.10.0.tar.gz
tar xvzf v3.10.0.tar.gz
cd yara-3.10.0/
./bootstrap.sh
./configure
make
sudo make install

공유 객체에 대한 오류가 발생하면 다음을 시도하여 수정하십시오.

sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf'
sudo ldconfig

binwalk 설치

binwalk를 저장소에서 간단히 설치하는 것이 가장 좋습니다.

git clone https://github.com/ReFirmLabs/binwalk
cd binwalk
sudo python3 setup.py install

binwalk의 추가 기능 설치에 대한 자세한 정보는 여기에 있습니다.

telfhash/tshl 설치

이 라이브러리는 악성코드 패밀리 분석을 위해 ELF 파일의 섹션을 해싱합니다. telfhash는 tlsh에 의존하므로 둘 다 설치하는 지침은 다음과 같습니다.

tlsh 설정

git clone https://github.com/trendmicro/tlsh
cd tlsh
./make.sh
cd py_ext/
python3 ./setup.py build
sudo python3 ./setup.py install

telfhash 설정

git clone https://github.com/trendmicro/telfhash
cd telfhash
sudo python3 setup.py install

웹 서버 설정

inhale 출력을 공유하기 위해 웹 서버를 사용하려면 config.yml의 변수를 적절한 경로로 설정하고 해당 디렉토리가 존재하는지 확인하십시오!

web:
  gen_html: False
  webdir: "/var/www/html/" # The actual web directory
  fqdn: "http://threat.land" # Your website
  in_path: "/var/www/html/inhaled/" # The path to inhale output
  ex_path: "/var/www/html/exhaled/" # The path for db query cache output

HTML 출력을 사용하려면 inhale을 다음과 같이 실행하십시오:

python3 inhale.py [all your args here] --html

사용법

유형별로 스크래핑할 파일을 지정하십시오:

-f INFILE      Analyze a single file
-d DIRECTORY   Analyze a directory of files
-u URLFILE     Analyze a remote file (url)
-r RDIRECTORY  Analyze a remote directory (url)
-l URLLIST     Analyze a list of URLs in a text file

기타 옵션:

-t TAGS        Add additional tags to the output.
-b             Turn off binwalk signatures
-y YARARULES   Specify custom Yara Rules
-o OUTDIR      Store scraped files in specific output dir (default: ./files/<date>/)
-i             Just print info, don't add files to database
--html         Save output as html to the webdir.

예제

inhale.py를 실행하면 주어진 파일/디렉토리/URL에 대한 모든 분석을 수행하고 터미널에 출력합니다.

/bin/ls에 대한 정보를 보되 데이터베이스에 추가하지 않음

python3 inhale.py -f /bin/ls -i 

'malwarez' 디렉토리를 데이터베이스에 추가

python3 inhale.py -d malwarez/

이 파일을 다운로드하고 데이터베이스에 추가

python3 inhale.py -u https://thugcrowd.com/chal/skull

이 원격 디렉토리의 모든 것을 다운로드하고 모두 'phishing'으로 태그 지정:

python3 inhale.py -r http://someurl.com/opendir/ -t phishing

PROTIP: 이 트위터 해시태그 검색을 사용하여 악성코드를 포함할 가능성이 있는 흥미로운 오픈 디렉토리를 찾으십시오. 사용에 따른 책임은 본인에게 있습니다.

Yara

-y를 사용하여 자신의 yara 규칙을 전달할 수 있습니다. 이것은 대규모 진행 중인 작업이며, 'YaraRules'의 거의 모든 것은 https://github.com/kevthehermit/PasteHunter/tree/master/YaraRules에서 가져온 것입니다. @KevTheHermit에게 감사 인사를 전합니다.

데이터베이스 쿼리

db.sh를 사용하여 쿼리합니다 (곧 멋진 스크립트가 될 예정)

db.sh *something* | jq .

데이터 모델

다음은 elasticsearch 데이터베이스에 사용되는 현재 데이터 모델입니다. 이 모든 필드가 모든 파일에 사용되는 것은 아닙니다. r2_* 태그는 일반적으로 일종의 바이너리용으로 예약되어 있습니다.

NameDescription
filename바이너리의 전체 경로
file_ext파일 확장자
filesize파일 크기
filetype매직 값에 기반한 파일 유형. binwalk 시그니처만큼 신뢰할 수 없음.
md5파일의 MD5 해시
sha1파일의 SHA1 해시
sha256파일의 SHA256 해시
added파일이 추가된 날짜
r2_arch바이너리 파일의 아키텍처
r2_baddr바이너리의 베이스 주소
r2_binsz프로그램 코드의 크기
r2_bits아키텍처 비트 - 8/16/32/64 등
r2_canary스택 카나리 활성화 여부
r2_class바이너리 클래스
r2_compiled바이너리가 컴파일된 날짜
r2_dbg_file바이너리의 디버그 파일
r2_intrp동적 링크된 경우 바이너리가 호출하는 인터프리터
r2_lang소스 코드의 언어
r2_lsyms디버그 심볼 존재 여부
r2_machine머신 유형, 일반적으로 바이너리 대상 CPU를 의미
r2_os머신이 실행되어야 하는 OS
r2_pic위치 독립 코드(PIC) 존재 여부
r2_relocs재배치 존재 여부
r2_rpath런타임 검색 경로 (해당되는 경우)
r2_stripped바이너리 스트립 여부
r2_subsys바이너리의 서브시스템
r2_format바이너리 포맷
r2_iorwioctl 호출 존재 여부
r2_type바이너리 유형 (실행 파일, 공유 객체 등)
yarayara 일치 목록 포함
binwalkbinwalk 시그니처 및 바이너리 내 위치 목록 포함
tags-t 플래그로 전달된 사용자 정의 태그
url원격으로 다운로드된 파일의 원본 URL
urls바이너리에서 추출된 모든 URL

문제 해결

이 프로젝트에는 몇 가지 알려진 문제가 있습니다 (주로 패키지 관리자 버전과 관련됨). 여기서는 해결책이 있는 모든 것을 추적하겠습니다.

ElasticSearch 인덱스 필드 제한

다음과 같은 오류가 발생하면:

elasticsearch.exceptions.RequestError: RequestError(400, 'illegal_argument_exception', 'Limit of total fields [1000] in index [inhaled] has been exceeded')

ElasticSearch의 이전 버전을 사용하고 있을 수 있습니다. 업그레이드하거나 다음 한 줄 명령으로 필드 제한을 늘릴 수 있습니다.

curl -XPUT 'localhost:9200/inhaled/_settings' -H 'Content-Type: application/json' -d'{ "index" : { "mapping" : { "total_fields" : { "limit" : "100000" }}}}'

향후 기능

  • Discord / Matrix용 봇 플러그인 재작성
  • 추가 바이너리 분석 기능 - 가져오기/내보내기 테이블 추출, 헤더의 특정 구조 해싱, 모든 문자열 로깅 등. 일부는 telfhash에 구현됨!
  • 추가하기 전에 파일이 데이터베이스인지 확인. 이 기능은 이전 ES 버전의 특정 문제로 인해 제거되었음.
  • 요청에 대한 구성 옵션: 사용자 에이전트, 타임아웃, 프록시 등.
  • 이 전체 프로젝트의 도커화.

기여

PR은 환영합니다! 구체적인 피드백을 원하시면 Twitter에서 @netspooky로 DM을 보내주셔도 됩니다.

감사의 말

이 도구를 함께 테스트해 주신 모든 분께 감사드립니다. 또한 코드를 좀 더 깔끔하게 정리해 주신 Plazmaz님께도 감사드립니다.

인사: hermit, plazmaz, nux, x0, dustyfresh, aneilan, sshell, readme, dnz, notdan, rqu, specters, nullcookies, ThugCrowd, 그리고 ThreatLand와 TC Safari Zone에 관련된 모든 분들께.

도구 다운로드