
리눅스 사후 익스플로잇 권한 상승 열거
Enumy는 침투 테스트 또는 CTF의 후기 침투 단계에서 대상 Linux 머신에 배포하는 __초고속 휴대용 실행 파일__입니다. enumy를 실행하면 박스의 __일반적인 보안 취약점__을 열거합니다.
x86 또는 x64 릴리스 탭에서 최종 바이너리를 다운로드할 수 있습니다. musl에 정적으로 링크됨 최종 enumy 바이너리를 대상 머신으로 전송합니다.
./enumy
$ ./enumy64 -h
▄█▀─▄▄▄▄▄▄▄─▀█▄ _____
▀█████████████▀ | __|___ _ _ _____ _ _
█▄███▄█ | __| | | | | | |
█████ |_____|_|_|___|_|_|_|_ |
█▀█▀█ |___|
https://github.com/luke-goddard/enumy
Enumy - Used to enumerate the target the target environment & look for
common security vulnerabilities and hostspots
----------------------------------------------------------------------
Output
-o <loc> OUTPUT results to location (default enumy.json)
Walking Filesystem
-i <loc> IGNORE files in this directory (usefull for network shares)
-w <loc> Only WALK files in this directory (usefull for devlopment)
Scan Options
-f run FULL scans (CPU intensive scan's enabled)
-t <num> THREADS (default 4)
Printing Options
-a Print all security AUDIT issues to screen (probably won't help duing a CTF)
Issues are ALWAYS logged in result files regardless of this flag being set.
-d <1|2> Print DEBUG mode (1 low, 2 high) to enable error being printed to screen.
-g <H|M|L> print to screen values GREATER than or equal to high, medium & low
-p <H|M|L|I> do not PRINT to screen high, medium, low & info issues (see below for example)
-m 1-100 MAXIMUM number of issues with same name to print to screen default (unlimited)
개발 중에 컴파일하려면 make와 libcap 라이브러리만 있으면 됩니다.
sudo apt-get install libcap-dev
make
glibc 종속성을 제거하고 모든 라이브러리를 정적으로 링크하며 musl로 컴파일하려면 다음을 수행하십시오. 이를 위해서는 docker가 설치되어 있어야 apline 빌드 환경을 만들 수 있습니다.
./build.sh 64bit
./build.sh 32bit
./build.sh all
cd output

아래는 지속적으로 확장 중인 구현된 스캔 목록입니다.
참고로 ❌로 표시된 결과를 화면에 출력하려면 -a 플래그로 감사 모드를 활성화하십시오.
이 스캔은 커널 버전을 확인하여 알려진 익스플로잇이 있는 커널 버전과 일치하는지 확인합니다.
이 스캔의 목적은 시스템을 열거하여 SUID/GUID 바이너리 중 비정상적이거나 취약한 권한을 가진 것을 찾는 것입니다.
최근 Linux 커널은 역량을 지원합니다. 이는 위험을 완화하기 위해 파일에 루트 권한의 일부를 부여하는 선호되는 방법입니다. 이는 훨씬 안전한 방법이지만, 파일에 설정된 비정상적인 역량을 발견한다면 실행 파일을 악용하여 더 높은 접근 권한을 얻을 가능성이 있습니다. Enumy는 시스템의 모든 실행 파일에 설정된 역량을 확인합니다.
이 스캔은 파일의 내용, 확장자 및 이름을 기반으로 파일을 분류하는 일반적인 스캔입니다. 개인 키, 암호 및 백업 파일과 같은 파일을 찾습니다.
코어 덤프 파일은 프로그램이 예기치 않게 종료될 때 프로세스의 주소 공간을 포함하는 ELF 파일 유형입니다. 이 프로세스의 메모리가 읽을 수 있고 민감한 정보를 포함하고 있다고 상상해보십시오. 또는 더 흥미롭게도, 이 코어 덤프가 내부 개발 도구의 segfault로 인해 생성된 것일 수 있으며, 이를 통해 제로데이를 개발할 수 있습니다.
일부 파일은 SUID 비트가 설정되어서는 안 됩니다. 게으른 시스템 관리자가 docker, ionice, hexdump와 같은 파일에 SUID를 설정하여 bash 스크립트를 작동시키거나 자신의 작업을 쉽게 만드는 경우가 흔합니다. 이 스크린은 알려진 잘못된 SUID 바이너리를 찾으려고 시도합니다.
Sysctl은 런타임에 커널 매개변수를 수정하는 데 사용됩니다. 또한 이러한 커널 매개변수를 쿼리하여 ASLR과 같은 중요한 보안 조치가 활성화되어 있는지 확인할 수 있습니다. 이 스캔은 sysctl 설정을 점검합니다.
생존 기술은 공격자가 시스템에 이미 존재하는 도구를 무기화하는 기법입니다. 이는 은밀성을 유지하기 위해 사용됩니다. 이 스캔은 공격자가 찾을 수 있는 파일을 열거합니다.
이 스캔은 ELF 파일을 파싱하여 종속성을 확인합니다. 이러한 종속성 중 하나에 쓰기 권한이 있거나 DT_RPATH 및 DT_RUNPATH 값에 쓰기 권한이 있다면, 악의적인 공유 객체를 해당 실행 파일에 삽입하여 시스템을 손상시킬 수 있습니다.
SSH는 실제 환경에서 가장 흔히 볼 수 있는 서비스 중 하나입니다. 또한 오설정하기 쉽습니다. 이 스캔은 SSH 설정을 강화할 수 있는 방법이 있는지 확인합니다.
현재 사용자 스캔은 /etc/passwd 파일을 분석합니다. 이 정보를 통해 루트 계정, 보호되지 않은 홈 디렉토리, 누락된 홈 디렉토리 등을 찾을 수 있습니다.
이 스캔은 전역적으로 쓰기 가능한 파일, 권한이 고르지 않은 파일, 소유자가 없는 파일을 찾습니다. 이 스캔에 대한 아이디어는 여기에서 참조하세요.
이 스캔은 Linux 시스템을 강화하려는 사람들에게 유용합니다. 암호화되지 않은 드라이브, 안전하지 않은 마운트 설정 등의 문제를 강조합니다.
| 스캔 유형 | 빠른 스캔 | 전체 스캔 | 구현 완료 | 화면 출력 | 로그 저장 |
|---|
| 커널 익스플로잇 제안 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| SUID/GUID 스캔 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| 파일 역량 스캔 | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
| 흥미로운 파일 스캔 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| 코어 덤프 스캔 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| 탈출 바이너리 스캔 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| SSHD 설정 스캔 | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
| Sysctl 스캔 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| 생존 기술 스캔 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| 현재 사용자 스캔 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| *.so 인젝션 스캔 | ❌ | ✔️ | ✔️ | ❌ | ✔️ |
| 권한 스캔 | ❌ | ✔️ | ✔️ | ❌ | ✔️ |
| 파일 시스템 스캔 | ❌ | ✔️ | ✔️ | ❌ | ✔️ |
| Docker 스캔 | ✔️ | ✔️ | ❌ | ✔️ | |
| 환경 스캔 | ✔️ | ✔️ | ❌ | ✔️ | |
| 권한 액세스 스캔 | ✔️ | ✔️ | ❌ | ✔️ | |
| 네트워킹 스캔 | ✔️ | ✔️ | ❌ | ✔️ | |
| 시스템 정보 스캔 | ✔️ | ✔️ | ❌ | ✔️ | |
| 버전 정보 스캔 | ✔️ | ✔️ | ❌ | ✔️ | |
| 기본 약한 자격 증명 스캔 | ✔️ | ✔️ | ❌ | ✔️ | |
| 약한 암호화 스캔 | ❌ | ✔️ | ❌ | ✔️ |