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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
FFM — 자유 투쟁 모드: 오픈 소스 해킹 하네스 | Kitploit
도구/GitHubGitHub/justicerage/ffm
Privilege EscalationLateral MovementData ExfiltrationInformation GatheringPost-ExploitationPenetration TestingCommand and ControlUtilities & FrameworksRed Teaming
GitHubjusticerage/ffm

FFM

자유 투쟁 모드: 오픈 소스 해킹 하네스

349474개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

자유 투쟁 모드 (FFM)

FFM은 레드팀 공격 후 단계에서 사용할 수 있는 해킹 하네스입니다. 이 도구의 아이디어는 @thegrugq의 2007년 컨퍼런스에서 비롯되었습니다.

이 도구는 SSTIC 2018에서 발표되었으며(비디오), 관련 슬라이드 데크는 이 URL에서 확인할 수 있습니다. 이러한 종류의 도구에 익숙하지 않다면 해킹 하네스의 목적을 이해하기 위해 해당 자료를 살펴보는 것을 강력히 권장합니다. 모든 설명은 슬라이드에 포함되어 있습니다.

이 프로젝트는 GPL v3 라이선스 조건에 따라 배포됩니다.

문서

주요 문서는 이 README와 commands/ 아래의 명령 모듈에 있습니다. 위에 링크된 SSTIC 발표 자료는 하네스 사용 방법에 대한 최상의 고수준 배경 정보를 제공합니다. 추가 안내 자료는 다음에서 확인할 수 있습니다:

  • https://ice-wzl.gitbook.io/hacknetics/c2-frameworks/ffm-documentation

기여자

  • ice-wzl은 프로젝트 기간 동안 명령어, 문서 및 리팩토링에 기여했습니다.

설치

Docker 설치

  • 다양한 최신 터미널 프롬프트를 고려하여 이 도구와 함께 docker 사용을 적극 권장합니다.
  • 이 저장소의 Dockerfile을 사용하면 발생할 수 있는 오류를 크게 줄일 수 있습니다.
  • 컨테이너를 사용하여 원격 호스트와 상호 작용하는 것도 더 안전합니다. 원격 호스트와 상호 작용 중에 공격을 받더라도 실제 호스트가 아닌 컨테이너에 머물게 됩니다. 그런 일이 발생하지 않기를 바랍니다.
  • 로컬 시스템에 Docker가 설치되어 있는지 확인하세요.
root@kitploit:~
git clone https://github.com/JusticeRage/FFM.git
cd /FFM

docker build Docker_Install/ -t ffm:ffm

docker image list 
REPOSITORY                TAG         IMAGE ID      CREATED        SIZE
localhost/ffm             ffm         fb6dd17e3b91  9 minutes ago  614 MB
docker.io/library/ubuntu  22.04       3b418d7b466a  2 weeks ago    80.3 MB

#run your new container and drop into a /bin/bash prompt as root
docker run -it --entrypoint /bin/bash -u 0 fb6dd17e3b91
  • 컨테이너에 들어간 후 root와 neo의 passwd를 설정하세요.
  • su neo를 입력하면 모든 준비가 완료됩니다.

Docker 없이 설치

  • 권장되지 않음
root@kitploit:~
 git clone https://github.com/JusticeRage/FFM.git
 cd /FFM
 pip install -r requirements.txt

사용법

해킹 하네스의 목표는 공격 후 단계에서 일반적인 작업을 자동화하는 도우미 역할을 하면서도 사용자가 저지를 수 있는 실수로부터 보호하는 것입니다. 이 도구는 셸의 계측(instrumentation)입니다. ./ffm.py를 실행하여 활성화하면 즉시 작업을 시작할 수 있습니다. 명령어는 commands/ 아래의 작은 모듈에 분산되어 있으며, commands/command_manager.py가 검색 및 등록을 처리합니다. 주요 그룹은 enumeration, help, stealth, transfer, execution입니다.

알아야 할 두 가지 명령어가 있습니다:

  • !list를 입력하면 하네스가 제공하는 모든 명령어가 표시됩니다.
  • !list tags를 입력하면 명령어가 분류될 수 있는 다양한 태그를 확인할 수 있습니다.
root@kitploit:~
!list tags
List of commands available:
	 enumeration
	 execution
	 help
	 stealth
	 transfer
  • 이제 !list enumeration(또는 다른 태그 중 하나)을 입력하면 해당 카테고리에 속하는 명령어를 볼 수 있습니다.
root@kitploit:~
!list enumeration
List of commands available:
	!backup-hunter: Hunts for backup files
	!info: Returns CPU(s), Architecture, Memory, and Kernel Verison for the current machine.
	!log: Toggles logging the harness' input and output to a file.
	!mtime: Returns files modified in the last X minutes
	!os: Prints the distribution of the current machine.
	!db-hunter: Hunts for .sqlite, .sqlite3, and .db files
	!sshkeys: Hunts for Private and Public SSH keys on the current machine.
	!suid: Finds SUID, SGID binaries on the current machine.
	--snip--

  • SHIFT+TAB을 입력하면 로컬 머신에서 탭 완성을 수행할 수 있습니다. 이 기능은 원격 컴퓨터에 SSH로 접속했지만 로컬 머신에 있는 파일을 참조해야 할 때 유용합니다.

기능 목록

이 해킹 하네스는 아래에 설명된 몇 가지 기능을 제공합니다. 기능을 설명하면서 도구 뒤에 있는 설계 철학도 함께 소개됩니다. FFM에 구현된 모든 명령어가 사용자에게 적합할 것으로 기대하지는 않습니다. 모든 사람은 자신만의 작업 방식을 가지고 있으며, 하네스를 특정 요구에 맞게 조정하려면 코드 일부를 수정하거나 몇 가지 플러그인을 작성해야 할 가능성이 큽니다. 이 과정이 수월하도록 많은 노력을 기울였습니다.

명령어

Enumeration Commands

  • !os는 cat /etc/*release*를 실행하여 현재 머신의 OS를 보여주는 매우 간단한 명령어입니다. 이는 해킹 하네스의 맥락에서 머신 경계를 넘어 작동하는 별칭을 정의할 수 있다는 데모로서 가장 가치가 있습니다. 어떤 컴퓨터에 SSH로 접속한 후 !os를 입력하면 명령어가 실행됩니다. 열거 명령어는 commands/enumeration_commands.py에, 도움말 명령어는 commands/help_commands.py에, 스텔스 관련 명령어는 commands/stealth_commands.py, commands/notty_sudo.py, commands/log_control.py에 분산되어 있습니다.
  • !backup-hunter 백업 파일을 찾습니다.
  • !info 현재 머신의 CPU, 아키텍처, 메모리 및 커널 버전을 반환합니다.
  • !log 하네스의 입력과 출력을 파일에 기록하는 것을 전환합니다. commands/log_control.py에 구현되어 있습니다.
  • !mtime 지난 X분 동안 수정된 파일을 반환합니다. 예를 들어 는 지난 5분 동안 수정된 로컬 머신의 모든 파일(볼 권한이 있는 파일)을 가져옵니다.

Transfer Commands

  • 파일을 가져오고 보내는 데 도움이 되는 명령어로, 매우 직관적입니다.
  • !download [원격 파일] [로컬 경로]는 원격 머신에서 파일을 가져와 터미널을 통해 로컬로 복사합니다. 이 명령어는 더 엄격한 오류 검사가 필요하기 때문에 약간 더 복잡하지만, 시작하기 위해 쉽게 읽을 수 있는 또 다른 명령어입니다. commands/download_file.py에 있습니다. 참고로 제대로 작동하려면 원격 머신에 xxd 또는 od가 필요합니다.
  • !download-dir [원격 디렉터리] [로컬 대상]은 원격 디렉터리의 tar 아카이브를 터미널을 통해 스트리밍하여 원격 파일 시스템을 건드리지 않고 로컬에 추출합니다. commands/download_directory.py에 있습니다. 원격 머신에 tar와 base64가 필요하며, 사용 가능한 경우 gzip도 사용합니다.
  • !upload [로컬 파일] [원격 경로]는 이전 명령어와 정확히 동일하게 작동하지만, 로컬 파일을 원격 머신에 업로드합니다. commands/upload_file.py에 있습니다.

Execution Commands

  • !sh [로컬 스크립트] 로컬 머신의 셸 스크립트를 메모리에서 실행합니다. commands/remote_script.py에 있습니다.
  • !py [로컬 스크립트] 로컬 파이썬 스크립트를 원격 머신에서 실행하며, 전적으로 메모리 내에서 실행합니다. commands/remote_script.py에 있습니다. 사용할 수 있는 스크립트는 다른 저장소를 확인하세요. 이 명령어는 <<를 사용한 여러 줄 구문을 사용하므로, 이를 지원하지 않는 의사 셸(Weevely가 좋은 예)에서는 이 명령어가 제대로 작동하지 않습니다.
  • !py3 [로컬 스크립트]는 python3가 있는 시스템을 제외하고 정확히 동일한 작업을 수행합니다. 동일한 모듈 commands/remote_script.py를 사용합니다.
  • !elf [로컬 스크립트] 원격 머신에서 사용 가능한 호환 가능한 Python 인터프리터를 사용하여 로컬 머신의 실행 파일을 메모리에서 실행합니다. commands/remote_elf.py에 있습니다.

Stealth Commands

  • 이 두 모듈이 "은밀함"의 반대라는 점을 잘 알고 있지만, 대체 위치가 마련될 때까지 현재 위치에 배치되었습니다. 이 스텔스 카테고리에는 눈에 띄게 만드는 명령어 외에도 더 잘 섞이는 데 도움이 되는 명령어가 포함될 가능성이 높습니다.
  • !pty는 TTY를 생성합니다. 이는 일반적으로 포렌식 증거를 남기기 때문에 대부분의 경우 원하지 않는 기능입니다. 그러나 일부 명령어(sudo)나 익스플로잇은 실행을 위해 TTY가 필요하므로 편의를 위해 제공됩니다. 생성 즉시 UNSET HISTFILE HISTFILESIZE HISTSIZE PROMPT_COMMAND와 함께 export TERM=xterm이 전달됩니다.
  • !sudo TTY 없이 sudo를 호출합니다. commands/notty_sudo.py에 있습니다.

플러그인은 ffm.conf를 편집하여 추가로 구성할 수 있습니다.

Processors

개념적으로 위에서 설명한 명령어는 셸로 전달되는 일부 bash를 생성하는 데 사용됩니다. 셸의 출력을 캡처하고 반환된 내용을 기반으로 추가 명령을 생성하여 더 복잡한 작업을 수행할 수 있습니다. 프로세서는 약간 다릅니다. 사용자와 기본 bash 프로세스 사이를 오가는 데이터를 다시 작성하는 데 사용됩니다. 모든 프로세서가 명령어로 다시 작성될 수 있다는 것은 사실이지만, 둘을 분리하는 것이 더 깔끔해 보였습니다. 입력 프로세서는 사용자가 ENTER 키를 누를 때 입력한 내용에 대해 작동하며, 출력 프로세서는 셸에서 반환된 모든 것을 수정할 수 있습니다.

  • 좋은 프로세서 예제는 processors/ssh_command_line.py에서 찾을 수 있습니다. 이 프로세서는 SSH 명령어에 -T 옵션이 누락된 경우 자동으로 추가합니다. 프로세서 작성에 관심이 있다면 간단한 코드를 확인해 보세요.
  • 프레임워크에 있는 또 다른 입력 프로세서인 processors/assert_torify.py는 네트워킹 명령어(ssh, nc) 블랙리스트를 포함하고 있으며, torify와 같은 도구를 통해 프록시되지 않은 경우 차단합니다. 하네스는 명령어가 로컬 머신에서 실행되고 있는 것으로 보이는 경우에만 사용자에게 알리도록 최선을 다합니다. 물론 이것이 홈 IP 주소가 유출되는 것을 방지하는 유일한 보호 장치가 되어서는 안 됩니다.
  • 마지막으로 processors/sample_output_processor.py는 "password"라는 단어가 나타날 때마다 빨간색으로 강조 표시하는 매우 간단한 출력 프로세서입니다. 상당히 쓸모가 없기 때문에 프레임워크에서 활성화되어 있지 않지만, 더 정교한 작업을 원하는 경우 출발점으로 사용할 수 있습니다.

알려진 문제

CTRL+R은 아직 구현되지 않았으며 모두가 그리워하고 있습니다.

더 문제가 되는 것은 프레임워크가 때때로 멈춘다는 것입니다. 99%의 경우, 실행한 명령어가 완료되었음을 감지하지 못할 때 발생합니다. 일반적으로 현재 로그인한 머신의 명령 프롬프트를 인식하지 못했기 때문입니다. 이 경우 ffm.py 파일의 맨 처음에 있는 정규식을 개선하거나, ssh -T를 사용하여 동일한 머신에 로그인하면 문제가 있는 프롬프트가 더 이상 나타나지 않습니다. 기본적으로 FFM은 5분 후에 명령어 출력 읽기를 포기합니다(일부 플러그인은 다른 타임아웃을 구현할 수 있음). 따라서 프레임워크가 멈추면 오류 메시지가 나타날 때까지 기다려야 합니다(기본 프로세스가 여전히 실행 중이면 명령어를 입력하지 못할 수 있습니다).

마무리 말

이 도구에 대해 필요한 모든 것을 다룬 것 같습니다. 다시 말하지만, 대부분의 사람들이 가치를 느끼기 위해 수정이 필요할 수 있다는 점에서 제가 일반적으로 릴리스하는 것과는 약간 다릅니다.

아직 작성되지 않은 많은 플러그인이 있으므로 FFM에 대한 개선 사항을 공유해 주시기 바랍니다. 버그뿐만 아니라 무언가를 시도하다가 방법을 찾지 못하는 경우에도 이슈를 열어 주세요. 그러면 모든 사람을 위해 문서를 개선할 수 있습니다.

할 일

  • 단일 파일 암호화 모듈

연락처

도구 다운로드
!mtime 5
  • !db-hunter .sqlite, .sqlite3, .db 파일 및 기타 데이터베이스 파일을 찾습니다.
  • !sshkeys 현재 머신에서 개인 및 공용 SSH 키를 찾습니다.
  • !suid 현재 머신에서 SUID, SGID 바이너리를 찾습니다.
  • !strange-dirs 사용자가 지정한 경로에서 시작하여 호스트의 이상한 디렉터리를 확인합니다.
  • !sudo-version 취약한 sudo 버전을 확인합니다.
  • !vm 장치가 가상 머신인지 확인합니다.