
리눅스 커널의 권한 상승 익스플로잇 노출을 감사하고, 휴리스틱 분석 및 config/sysctl 점검을 통해 커널 강화 보안 조치를 확인합니다.
빠른 다운로드:
wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh -O les.sh
LES 사용법 및 내부 작동에 대한 자세한 내용:
https://blog.z-labs.eu/2019/05/10/les-paper.html
LES를 위한 추가 자료:
https://github.com/mzet-/les-res
LES 도구는 주어진 Linux 커널/Linux 기반 시스템의 보안 결함을 감지하는 데 도움을 주기 위해 설계되었습니다. 다음 기능을 제공합니다:
도구는 (자세한 내용은 여기에서 논의된 휴리스틱 방법을 사용하여) 주어진 Linux 시스템이 공개적으로 알려진 Linux 권한 상승 익스플로잇에 노출된 정도를 평가합니다. 도구 출력 예시:
$ ./linux-exploit-suggester.sh
...
[+] [CVE-2017-16995] eBPF_verifier
Details: https://ricklarabee.blogspot.com/2018/07/ebpf-and-analysis-of-get-rekt-linux.html
Exposure: highly probable
Tags: debian=9.0{kernel:4.9.0-3-amd64},fedora=25|26|27,[ ubuntu=14.04 ]{kernel:4.4.0-89-generic},ubuntu=(16.04|17.04){kernel:4.(8|10).0-(19|28|45)-generic}
Download URL: https://www.exploit-db.com/download/45010
Comments: CONFIG_BPF_SYSCALL needs to be set && kernel.unprivileged_bpf_disabled != 1
[+] [CVE-2017-1000112] NETIF_F_UFO
Details: http://www.openwall.com/lists/oss-security/2017/08/13/1
Exposure: probable
Tags: [ ubuntu=14.04{kernel:4.4.0-*} ],ubuntu=16.04{kernel:4.8.0-*}
Download URL: https://raw.githubusercontent.com/xairy/kernel-exploits/master/CVE-2017-1000112/poc.c
ext-url: https://raw.githubusercontent.com/bcoles/kernel-exploits/cve-2017-1000112/CVE-2017-1000112/poc.c
Comments: CAP_NET_ADMIN cap or CONFIG_USER_NS=y needed. SMEP/KASLR bypass included. Modified version at 'ext-url' adds support for additional distros/kernels
[+] [CVE-2016-8655] chocobo_root
Details: http://www.openwall.com/lists/oss-security/2016/12/06/1
Exposure: probable
Tags: [ ubuntu=(14.04|16.04){kernel:4.4.0-(21|22|24|28|31|34|36|38|42|43|45|47|51)-generic} ]
Download URL: https://www.exploit-db.com/download/40871
Comments: CAP_NET_RAW capability is needed OR CONFIG_USER_NS=y needs to be enabled
...
각 익스플로잇에 대해 노출 정도가 계산됩니다. 다음과 같은 '노출' 상태가 가능합니다:
매우 높음 - 평가된 커널이 영향을 받을 가능성이 매우 높으며, PoC 익스플로잇이 별다른 수정 없이 즉시 작동할 가능성이 매우 높습니다.
높음 - 익스플로잇이 작동할 가능성이 있지만, 대상에 맞게 PoC 익스플로잇을 사용자 정의해야 할 가능성이 높습니다.
낮음 - 커널이 영향을 받는지 확인하기 위해 추가적인 수동 분석이 필요합니다.
없음 - 커널이 영향을 받을 가능성이 매우 낮습니다 (익스플로잇이 도구 출력에 표시되지 않음)
LES는 Linux 커널이 제공하는 대부분의 보안 설정을 확인할 수 있습니다. 커널 컴파일 타임 설정(CONFIG)뿐만 아니라 런타임 설정(sysctl)도 확인하여 실행 중인 커널의 보안 상태에 대한 보다 완전한 그림을 제공합니다. 이 기능은 Tobias Klein의 checksec.sh 도구의 --kernel 스위치의 현대적인 연속으로 의도되었습니다. 도구 출력 예시:
$ ./linux-exploit-suggester.sh --checksec
Mainline kernel protection mechanisms:
[ Disabled ] GCC stack protector support (CONFIG_HAVE_STACKPROTECTOR)
https://github.com/mzet-/les-res/blob/master/features/stackprotector-regular.md
[ Disabled ] GCC stack protector STRONG support (CONFIG_STACKPROTECTOR_STRONG)
https://github.com/mzet-/les-res/blob/master/features/stackprotector-strong.md
[ Enabled ] Low address space to protect from user allocation (CONFIG_DEFAULT_MMAP_MIN_ADDR)
https://github.com/mzet-/les-res/blob/master/features/mmap_min_addr.md
[ Disabled ] Restrict unprivileged access to kernel syslog (CONFIG_SECURITY_DMESG_RESTRICT)
https://github.com/mzet-/les-res/blob/master/features/dmesg_restrict.md
[ Enabled ] Randomize the address of the kernel image (KASLR) (CONFIG_RANDOMIZE_BASE)
https://github.com/mzet-/les-res/blob/master/features/kaslr.md
[ Disabled ] Hardened user copy support (CONFIG_HARDENED_USERCOPY)
https://github.com/mzet-/les-res/blob/master/features/hardened_usercopy.md
...
Linux 시스템의 공개적으로 알려진 익스플로잇에 대한 노출 평가:
$ ./linux-exploit-suggester.sh
Linux 시스템의 보안 기능 상태 표시:
$ ./linux-exploit-suggester.sh --checksec
제공된 'uname' 문자열(즉, uname -a 명령의 출력)을 기반으로 공개적으로 알려진 익스플로잇에 대한 Linux 커널의 노출 평가:
$ ./linux-exploit-suggester.sh --uname <uname-string>
더 많은 사용 예제는 여기를 참조하세요.
이제 LES가 무엇이고 무엇을 할 수 있는지 아셨기를 바랍니다. 이제 LES를 위해 무엇을 할 수 있는지 살펴보세요:
Tags 형식으로 결과를 문서화하세요. 예를 들어 태그: ubuntu=12.04{kernel:3.(2|5).0-(23|29)-generic}는 태그된 익스플로잇이 Ubuntu 12.04에서 커널: 3.2.0-23-generic, 3.2.0-29-generic, 3.5.0-23-generic, 3.5.0-29-generic에서 올바르게 작동하는 것으로 확인되었음을 나타냅니다. 이 태그가 추가되면 LES는 나열된 커널 버전 중 하나로 Ubuntu 12.04에서 실행될 때 익스플로잇의 동적 Rank를 자동으로 강조 표시하고 증가시킵니다. 이는 침투 테스트 중에 심각하게 취약한 Linux 시스템을 신속하게 식별하는 데 도움이 됩니다.ext-url 항목으로 추가하고 새로 추가된 대상을 반영하도록 Tags를 수정하세요. 특정 PoC 익스플로잇을 다른 커널 버전에 적용하는 훌륭한 예제는 이 기사를 참조하세요.FEATURES 배열에 추가하고(아직 없는 경우) 분석 내용을 https://github.com/mzet-/les-res/blob/master/features/<feature-name>.md에 게시하세요.bcoles님의 LES에 대한 훌륭하고 빈번한 기여에 감사드립니다.