
Windows/Samba 열거 도구인 enum4linux의 차세대 버전으로, JSON/YAML 내보내기와 같은 추가 기능을 제공합니다. 보안 전문가와 CTF 플레이어를 대상으로 합니다.
enum4linux의 차세대 버전
enum4linux-ng.py는 Mark Lowe (이전 Portcullis Labs, 현재 Cisco CX Security Labs)의 enum4linux.pl을 재작성한 것입니다. 이 도구는 Windows 및 Samba 시스템에서 정보를 열거하기 위한 도구로, 보안 전문가와 CTF 플레이어를 대상으로 합니다. 주로 Samba 도구인 nmblookup, net, rpcclient 및 smbclient를 래핑하는 역할을 합니다.
제가 직접 교육 목적으로 만들었으며, enum4linux.pl의 문제점을 해결하기 위해 제작했습니다. 원래 도구와 동일한 기능을 제공하지만 (일부 사항은 다르게 처리됩니다). 원래 도구와 달리 Samba 도구의 모든 출력을 파싱하고 모든 결과를 YAML 또는 JSON 파일로 내보낼 수 있습니다. 이를 통해 다른 도구가 결과를 가져와 추가 처리할 수 있도록 하는 것이 목적입니다. 향후 새로운 기능을 추가할 계획입니다.
NO_COLOR를 통해 비활성화 가능 - https://no-color.org/)원래 enum4linux와 비교하여 일부 구현이 다릅니다. 중요한 차이점은 다음과 같습니다:
-Gm으로 활성화할 수 있습니다.-A)에 포함되지 않지만 -R로 활성화할 수 있습니다.-a 대신 -A).이전 Portcullis Labs (현재 Cisco CX Security Labs)의 분들께 감사드리며 크레딧을 드립니다:
또한 다음 분들께 감사드리며 크레딧을 드립니다:
여러분의 코드를 읽는 것이 정말 재미있었습니다! :)
마지막으로, 코드를 기여하고, 이슈를 보고하고, 도구 개선에 도움이 되는 제안을 해주신 여러분께 감사드립니다.
이 도구를 사용하는 경우: 불법적인 목적으로 사용하지 마십시오.
다음과 같은 예시 실행이 가능합니다:
enum4linux-ng.py -As <target> -oY out
Windows Server 2012 R2 표준 설치를 대상으로 실행하는 데모입니다. 다음 명령어가 사용됩니다:
enum4linux-ng.py 192.168.125.131 -u Tester -p 'Start123!' -oY out
'Start123!' 비밀번호를 가진 'Tester' 사용자가 생성되었습니다. 방화벽 접근이 허용되었습니다. 열거가 완료되면 위로 스크롤하여 결과를 더 명확하게 볼 수 있습니다. 다른 열거 옵션이 지정되지 않았으므로 도구는 -A를 가정하며, 이는 enum4linux의 -a 옵션과 유사하게 동작합니다. 사용자와 비밀번호가 전달됩니다. -oY 옵션은 모든 열거 데이터를 YAML 파일(out.yaml)로 내보내 추가 처리에 사용할 수 있습니다. 도구는 시작 시 LDAP가 원격 호스트에서 실행 중이 아닌 것을 자동으로 감지합니다. 따라서 기본 열거의 일부인 추가 LDAP 검사를 건너뜁니다.

두 번째 데모는 Metasploitable 2를 대상으로 실행하는 것입니다. 다음 명령어가 사용됩니다:
enum4linux-ng.py 192.168.125.145 -A -C
이번에는 -A와 -C 옵션이 사용됩니다. 첫 번째 옵션은 enum4linux의 -a 옵션과 유사하게 동작하며, 두 번째 옵션은 서비스 열거를 활성화합니다. 이번에는 자격 증명이 제공되지 않았습니다. 도구는 자동으로 SMBv1을 사용해야 함을 감지합니다. YAML이나 JSON 파일은 작성되지 않습니다. 다시 위로 스크롤하여 결과를 더 명확하게 볼 수 있습니다.

usage: enum4linux-ng.py [-h] [-A] [-As] [-U] [-G] [-Gm] [-S] [-C] [-P] [-O] [-L] [-I] [-R [BULK_SIZE]] [-N] [-w DOMAIN] [-u USER]
[-p PW | -K TICKET_FILE | -H NTHASH] [--local-auth] [-d] [-k USERS] [-r RANGES] [-s SHARES_FILE] [-t TIMEOUT] [-v] [--keep]
[-oJ OUT_JSON_FILE | -oY OUT_YAML_FILE | -oA OUT_FILE]
host
이 도구는 Mark Lowe의 enum4linux.pl을 재작성한 것으로, Windows 및 Samba 시스템에서 정보를 열거하기 위한 도구입니다. 주로 Samba 도구 nmblookup, net, rpcclient 및 smbclient를 래핑합니다. 원래 도구와 달리 열거 결과를 YAML 또는 JSON 파일로 내보낼 수 있어 다른 도구에서 추가 처리할 수 있습니다. 도구는 '스마트' 열거를 시도합니다. 먼저 대상에서 SMB 또는 LDAP에 접근 가능한지 확인합니다. 이 검사 결과에 따라 동적으로 검사를 건너뜁니다 (예: LDAP가 실행 중이 아닌 경우 LDAP 검사 스킵). SMB에 접근 가능하면 항상 세션을 설정할 수 있는지 확인합니다. 세션을 설정할 수 없으면 열거를 중단합니다. 열거 과정은 CTRL+C로 중단할 수 있습니다. -oJ 또는 -oY 옵션이 제공된 경우, CTRL+C로 SIGINT를 받으면 도구는 현재 열거 상태를 JSON 또는 YAML 파일에 기록합니다. 이 도구는 보안 전문가와 CTF 플레이어를 위해 만들어졌습니다. 불법적인 사용은 금지됩니다.
positional arguments:
host
options:
-h, --help 이 도움말 메시지를 표시하고 종료합니다.
-A nmblookup을 포함한 모든 간단 열거 수행 (-U -G -S -P -O -N -I -L). 다른 옵션을 제공하지 않으면 이 옵션이 활성화됩니다.
-As NetBIOS 이름 조회 없이 모든 간단 짧은 열거 수행 (-U -G -S -P -O -I -L)
-U RPC를 통해 사용자 가져오기
-G RPC를 통해 그룹 가져오기
-Gm RPC를 통해 그룹 멤버 포함 그룹 가져오기
-S RPC를 통해 공유 가져오기
-C RPC를 통해 서비스 가져오기
-P RPC를 통해 암호 정책 정보 가져오기
-O RPC를 통해 OS 정보 가져오기
-L LDAP/LDAPS를 통해 추가 도메인 정보 가져오기 (DC 전용)
-I RPC를 통해 프린터 정보 가져오기
-R [BULK_SIZE] RID 사이클링을 통해 사용자 열거. 선택적으로 조회 요청 크기를 지정합니다.
-N NetBIOS 이름 조회 수행 (nbtstat와 유사) 및 출력에서 작업 그룹 검색 시도
-w DOMAIN 작업 그룹/도메인 수동 지정 (보통 자동으로 찾음)
-u USER 사용할 사용자 이름 지정 (기본값 "")
-p PW 사용할 비밀번호 지정 (기본값 "")
-K TICKET_FILE Kerberos로 인증 시도, Active Directory 환경에서만 유용 (참고: 이 옵션이 작동하려면 DNS가 올바르게 설정되어야 함)
-H NTHASH 해시로 인증 시도
--local-auth 대상에 로컬 인증
-d 사용자 및 그룹에 대한 상세 정보 가져오기, -U, -G 및 -R에 적용됩니다.
-k USERS 원격 시스템에 존재하는 사용자 (기본값: administrator,guest,krbtgt,domain admins,root,bin,none). "lookupsids"로 SID를 가져오는 데 사용됩니다.
-r RANGES 열거할 RID 범위 (기본값: 500-550,1000-1050)
-s SHARES_FILE 무차별 대입 공유 추측
-t TIMEOUT 연결 타임아웃 설정 (초 단위, 기본값: 10초)
-v 상세 모드, 실행 중인 samba 도구 명령 (net, rpcclient 등)을 표시합니다.
--keep 열거 후 생성된 Samba 구성 파일을 삭제하지 않습니다 (-v와 함께 유용).
-oJ OUT_JSON_FILE 출력을 JSON 파일로 작성 (확장자는 자동으로 추가됨)
-oY OUT_YAML_FILE 출력을 YAML 파일로 작성 (확장자는 자동으로 추가됨)
-oA OUT_FILE 출력을 YAML 및 JSON 파일로 작성 (확장자는 자동으로 추가됨)
도구를 설치하는 방법은 여러 가지입니다. Linux 배포판의 패키지로 제공되거나 수동 설치가 필요합니다.
apt install enum4linux-ng
pacman -S enum4linux-ng
(NixOS 20.9에서 테스트됨)
nix-env -iA nixos.enum4linux-ng
Linux 배포판에서 패키지를 제공하지 않는 경우 다음 수동 설치 방법을 사용할 수 있습니다.
이 도구는 Samba 클라이언트 도구를 사용합니다:
이들은 모든 Linux 배포판에서 사용 가능해야 합니다. 패키지 이름은 일반적으로 smbclient, samba-client 또는 이와 유사합니다.
또한 다음 Python 패키지가 필요합니다:
YAML 처리 속도를 높이려면 (선택 사항) 다음도 설치하십시오 (대부분의 Linux 배포판에서 PyYaml의 의존성으로 함께 설치됩니다):
특정 Linux 배포판의 설치 예시는 아래에 나와 있습니다. 또는 배포판에 구애받지 않는 방법 (python pip, python virtual env 및 Docker)도 가능합니다.
아래 모든 배포판 예시에서 LibYAML은 해당 PyYaml 패키지의 의존성이므로 자동으로 설치됩니다.
pacman -S smbclient python-ldap3 python-yaml impacket
(Fedora Workstation 31에서 테스트됨)
dnf install samba-common-tools samba-client python3-ldap3 python3-pyyaml python3-impacket
(Ubuntu 18.04 이하의 경우 Docker 또는 Python 가상 환경 변형 사용)
apt install smbclient python3-ldap3 python3-yaml python3-impacket
Linux 배포판에 따라 pip3 또는 pip가 필요합니다:
pip install pyyaml ldap3 impacket
또는:
pip install -r requirements.txt
위에서 언급한 Samba 도구를 여전히 설치해야 합니다.
git clone https://github.com/cddmp/enum4linux-ng
cd enum4linux-ng
python3 -m venv venv
source venv/bin/activate
pip install wheel
pip install -r requirements.txt
그런 다음 다음 명령으로 실행:
python3 enum4linux-ng.py -As <target>
위에서 언급한 Samba 도구를 여전히 설치해야 합니다. 또한 새 셸을 열 때마다 source venv/bin/activate를 실행해야 합니다. 그렇지 않으면 잘못된 Python 인터프리터와 라이브러리가 사용됩니다 (가상 환경이 아닌 시스템의 것).
git clone https://github.com/cddmp/enum4linux-ng
cd enum4linux-ng
docker build . --tag enum4linux-ng
완료되면 예시 실행은 다음과 같습니다:
docker run -t enum4linux-ng -As <target>
때때로 도구에서 다음과 같은 오류 메시지가 출력될 수 있습니다:
Could not <some text here>, please open a GitHub issue
이 경우 -v 및 --keep 옵션을 사용하여 도구를 다시 실행하십시오. 그러면 오류 메시지를 발생시킨 정확한 명령을 볼 수 있습니다. 해당 명령을 복사하여 터미널에서 실행하고 출력을 파일로 리디렉션한 후, 여기에 GitHub 이슈를 열어 명령과 오류 출력 파일을 첨부하십시오. 이렇게 하면 문제를 디버깅하는 데 도움이 됩니다. 물론 직접 디버깅하여 풀 리퀘스트를 제출할 수도 있습니다.
도구가 유용하다면 별표를 눌러주시면 감사하겠습니다!