
Penetration Testers Framework (PTF)는 최신 도구를 위한 모듈식 지원을 제공하는 방법입니다.
===
PenTesters 프레임워크(PTF)는 Debian/Ubuntu/ArchLinux 기반 배포판에서 침투 테스트를 위한 유사하고 익숙한 환경을 만들기 위해 설계된 Python 스크립트입니다. 침투 테스터로서 우리는 항상 최신 상태로 유지하려는 /pentest/ 디렉토리나 자체 도구 세트에 익숙해져 있습니다. 정기적으로 사용하는 "필수" 도구들이 있으며, 최신 버전을 사용하는 것이 중요합니다.
PTF는 모든 침투 테스트 도구(최신 버전)를 설치하고, 컴파일하고, 빌드하여 모든 머신에 설치/업데이트할 수 있도록 합니다. 모든 것은 침투 테스트 실행 표준(PTES)에 맞춰 체계적으로 정리되어 있으며, 거의 사용되지 않는 많은 부분을 제거합니다. PTF는 설치와 패키징을 단순화하고 완전한 침투 테스트 프레임워크를 제공합니다. 이는 프레임워크이므로 필요에 따라 구성하고 추가할 수 있습니다. 이 프레임워크의 일부로 내부적으로 개발된 레포지토리를 사용하는 경우도 흔히 있습니다. 모두 여러분의 선택에 달려 있습니다.
이 프로젝트의 궁극적인 목표는 커뮤니티 지원입니다. GitHub 저장소에 새로운 도구를 추가해 주세요. 모듈을 제출해 주세요. 모듈을 구성하고 추가하는 것은 매우 간단하며 몇 분밖에 걸리지 않습니다.
PTF가 제대로 작동하려면 python-pexpect가 필요합니다.
아래 명령어를 실행하세요:
pip install -r requirements.txt
./ptf
먼저 모든 것을 설치할 기본 위치가 포함된 config/ptf.config 파일을 확인하세요. 기본적으로 /pentest 디렉토리에 설치됩니다. 구성이 완료되면 ./ptf(또는 python ptf)를 입력하여 PTF를 실행하세요.
그러면 Metasploit 스타일의 셸이 실행되며, 일관된 느낌과 모양을 제공합니다. 모듈 보기, <모듈> 사용 등 모든 명령을 사용할 수 있습니다. 가장 먼저, 항상 help나 ?를 입력하여 전체 명령 목록을 확인하세요.
PTF 사용 방법에 대한 비디오 튜토리얼은 여기 Vimeo 페이지에서 확인하세요: https://vimeo.com/137133837
모든 것을 설치하거나 업데이트하려면 다음을 수행하세요:
./ptf
use modules/install_update_all
yes
이렇게 하면 PTF 내의 모든 도구가 설치됩니다. 이미 설치된 경우 자동으로 순회하며 모든 것을 업데이트합니다.
개별 모듈을 설치한 후, use modules/update_installed 명령을 사용하면 이전에 설치한 것만 업데이트할 수 있습니다.
예시:
./ptf
use modules/update_installed
이렇게 하면 이전에 설치한 모듈만 업데이트됩니다.
또한 show options 명령으로 모듈에 대한 정보를 변경할 수 있습니다.
예를 들어 익스플로잇 도구만 설치하려면 다음을 실행하세요:
./ptf
use modules/exploitation/install_update_all
이렇게 하면 익스플로잇 모듈만 설치됩니다. 모든 모듈 카테고리에 대해 이렇게 할 수 있습니다.
설치하려는 도구만 선택하려면 modules/custom_list/list.txt 섹션으로 이동하세요. list.txt 파일을 수정하고 설치하거나 업데이트하려는 도구만 추가하세요.
예시 list.txt 파일:
modules/exploitation/metasploit modules/post-exploitation/unicorn
그런 다음 PTF에서:
./ptf
use modules/custom_list/list
yes
이렇게 하면 모듈 구성을 유지하면서 원하는 도구만 설치하고 업데이트 상태를 유지할 수 있습니다.
카테고리를 사용하지 않고 모듈을 직접 지정할 수도 있습니다:
./ptf
use trevorc2
yes
먼저 modules/ 디렉토리로 이동하세요. 그 안에는 침투 테스트 실행 표준(PTES) 단계에 기반한 하위 디렉토리가 있습니다. 해당 단계로 이동하여 여러 모듈을 살펴보세요. 예를 들어 testing.py와 같은 새 모듈을 추가하면 PTF를 다음에 실행할 때 자동으로 임포트됩니다. 모듈을 작성할 때 반드시 포함되어야 하는 몇 가지 주요 구성 요소가 있습니다.
아래는 샘플 모듈입니다.
AUTHOR="David Kennedy (ReL1K)"
DESCRIPTION="This module will install/update the Browser Exploitation Framework (BeEF)"
INSTALL_TYPE="GIT"
REPOSITORY_LOCATION="https://github.com/beefproject/beef"
X64_LOCATION="https://github.com/something_thats_x64_instead_of_x86
INSTALL_LOCATION="beef"
DEBIAN="ruby1.9.3,sqlite3,ruby-sqlite3"
ARCHLINUX = "arch-module,etc"
BYPASS_UPDATE="NO"
AFTER_COMMANDS="cd {INSTALL_LOCATION},ruby install-beef"
LAUNCHER="beef"
TOOL_DEPEND="modules/exploitation/metasploit"
모든 필드는 매우 간단합니다. 저장소 위치의 경우 GIT, SVN FILE 또는 TAGS를 사용할 수 있습니다. 종속성을 채우고 설치 위치를 지정하세요. PTF는 Python 파일이 위치한 곳(예: exploitation)을 가져와 PTF 구성(config 아래에 있음)에서 지정한 위치로 이동합니다. 기본적으로 모든 도구는 /pentest/PTES_PHASE/TOOL_FOLDER에 설치됩니다.
모듈에서 after 명령어에 {INSTALL_LOCATION}을 지정할 수 있습니다. 이렇게 하면 after 명령어를 사용할 때 설치 위치가 추가됩니다.
또한 {PTF_LOCATION}을 지정하여 PTF 설치의 기본 경로를 가져올 수 있습니다.
저장소 위치에 대해 32비트와 64비트 위치를 모두 지정할 수 있습니다. 저장소 위치는 항상 x86 다운로드 경로여야 합니다. 도구에 64비트 경로를 추가하려면 X64_LOCATION을 지정하고 URL을 제공하세요. PTF가 실행될 때 자동으로 아키텍처를 감지하고 x86 대신 x64 링크를 사용합니다.
ArchLinux 패키지도 지원됩니다. 모듈에서 DEBIAN과 ARCH 모두에 대해 지정해야 해당 플랫폼에 올바르게 설치할 수 있습니다.
TAGS 모드를 사용하면 태그를 활용하는 GitHub 프로젝트에서 최신 버전(보통 컴파일된 애플리케이션)을 가져와 자동으로 다운로드할 수 있습니다. TAGS 방법을 사용하려면 modules/intelligence-gathering/teamfiltration.py의 구조를 참조하세요. 이 예에서는 repository_location이 필요하지 않지만, 프로젝트 소유자, 프로젝트 이름/저장소, 다운로드할 파일 이름을 알아야 합니다. TeamFiltration의 예에서는 https://github.com/Flangvik/TeamFiltration에 위치합니다. 소유자는 Flangvik, 프로젝트/도구는 TeamFiltration입니다. 릴리스 페이지(https://github.com/Flangvik/TeamFiltration/releases/)로 이동하면 다운로드하려는 파일 이름이 "TeamFiltration_Linux"임을 알 수 있습니다. 이들은 OWNER, REPOHOME, FILENAME 아래에 있습니다. 이를 지정하면 PTF가 자동으로 도구의 최신 릴리스를 감지하여 설치합니다.
자체 모듈을 만들 수 있으며 PTF는 gitlab 액세스도 지원합니다. git, wget 등을 지정하는 대신 gitlab을 지정하고 자체 내부 gitlab 도구를 모듈로 가리키면 됩니다.
주요 방법으로 전통적인 git 또는 svn을 사용하는 경우, 모듈이 설치된 후에는 최신 버전의 도구를 가져옵니다. after 명령어가 있는 경우 일반적으로 업데이트할 때마다 after 명령어를 실행해야 할 수 있습니다. 업데이트 우회를 YES(BYPASS_UPDATE="YES")로 지정하면 도구가 실행될 때마다 최신 버전을 체크아웃하고 after 명령어도 계속 실행합니다. NO로 표시하면 시스템의 최신 버전만 git pull합니다. FILE 옵션의 경우 항상 BYPASS_UPDATE="YES"를 사용하는 것이 좋습니다. 그러면 매번 파일을 덮어씁니다.
After 명령어는 설치 후 삽입할 수 있는 명령어입니다. 디렉토리로 전환하여 추가 명령을 실행하여 설치를 완료할 수 있습니다. 예를 들어 BEEF 시나리오에서는 설치 후 ruby install-beef를 실행해야 합니다. 아래는 {INSTALL_LOCATION} 플래그를 사용한 after 명령어의 예입니다.
AFTER_COMMANDS="cp config/dict/rockyou.txt {INSTALL_LOCATION}"
자체 설치(사용자 상호작용 불필요)를 수행하는 AFTER_COMMANDS용입니다.
모듈의 LAUNCHER= 플래그는 선택 사항입니다. 예를 들어 LAUNCHER="setoolkit"을 추가하면 PTF가 자동으로 도구의 실행기를 /usr/local/bin/ 아래에 생성합니다. setoolkit 예에서는 실행 시 PTF가 /usr/local/bin/setoolkit 파일을 자동으로 생성하여 어디서든 setoolkit을 입력하여 SET을 실행할 수 있습니다. 모든 파일은 여전히 적절한 카테고리 아래에 설치됩니다(예: /pentest/exploitation/setoolkit). 하지만 자동 실행기가 생성됩니다.
애플리케이션에 여러 실행기를 가질 수 있습니다. 예를 들어 Metasploit의 경우 msfconsole, msfvenom 등을 원할 수 있습니다. 여러 실행기를 추가하려면 쉼표(,)로 구분하세요. 예: LAUNCHER="msfconsole,msfvenom". 그러면 두 개의 실행기가 생성됩니다.
./ptf --update-all을 실행하면 프레임워크에 진입하지 않고도 모든 것을 자동으로 업데이트할 수 있습니다.
자동 빌드에서 ptf를 실행하는 경우, 설치하려는 모듈을 대화형으로 입력하지 않도록 heredoc을 사용할 수 있습니다. 예:
./ptf <<EOF
use modules/exploitation/metasploit
run
use modules/password-recovery/johntheripper
run
EOF
Veil, SET 등과 같은 일부 도구는 Metasploit Framework와 같은 도구가 필요합니다. 모듈에 TOOL_DEPEND="modules/exploitation/metasploit,module/exploitation/set"와 같이 추가할 수 있으며, 도구를 설치하기 전에 필요한 도구가 있는 경우 여러 도구를 추가할 수 있습니다. 이렇게 하면 PTF가 먼저 필요한 도구를 설치한 다음 해당 모듈을 설치합니다. 예:
TOOL_DEPEND="modules/exploitation/metasploit"
이렇게 하면 애플리케이션을 설치하기 전에 먼저 Metasploit이 설치되거나 설치되었는지 확인합니다.
IGNORE_THESE_MODULES= 구성 옵션은 PTF 루트 디렉토리의 config/ptf.config에서 찾을 수 있습니다. 이 옵션은 모듈을 무시하고 설치하지 않습니다. 모든 것은 쉼표로 구분되며 이름을 기준으로 합니다. 예: modules/exploitation/metasploit,modules/exploitation/set 또는 전체 모듈 카테고리(예: /modules/code-audit/*,/modules/reporting/*)
IGNORE_UPDATE_ALL_MODULES= 구성 옵션은 PTF 루트 디렉토리의 config/ptf.config에서 찾을 수 있습니다. 이 옵션은 install_update_all을 실행할 때만 모듈을 무시합니다(모든 도구를 설치하려는 경우). 상당한 시간이 소요되는 대규모 애플리케이션, 사용자 상호작용이 필요한 애플리케이션, 또는 시스템에서 여러 포트와 프로토콜을 여는 애플리케이션에 유용합니다. IGNORE_THESE_MODULES와 매우 유사하게 작동하지만, modules/update_installed를 통해 수동으로 설치 및 업데이트할 수 있습니다. 쉼표로 구분되므로 예를 들어 modules/exploitation/tool1,modules/exploitation/tool2와 같이 지정하면 install_update_all을 실행할 때 해당 도구가 설치되지 않습니다. 단, use modules/exploitation/tool1을 통해 해당 방법으로 설치하는 경우는 제외됩니다.
config/ptf.config 아래의 구성 옵션에 있는 INCLUDE_ONLY_THESE_MODULES는 여기에 지정된 특정 모듈만 설치하고 포함합니다. 이는 원하는 도구를 기준으로 삼고 해당 도구만 설치하는 데 유용합니다.
원한다면 배너 메시지 없이 PTF를 실행할 수 있습니다. 다음을 지정하세요:
./ptf --no-banner
또는
./ptf -nb
다음을 입력하여 PTF를 통해 이미 설치한 애플리케이션을 확인할 수 있습니다:
ptf>show installed