
mssqlproxy는 제한된 환경에서 손상된 Microsoft SQL Server를 통해 소켓 재사용을 이용하여 측면 이동(lateral movement)을 수행하기 위한 툴킷입니다.
mssqlproxy는 제한된 환경에서 손상된 Microsoft SQL Server를 통해 소켓 재사용을 이용하여 측면 이동을 수행하기 위한 툴킷입니다. 클라이언트는 SQL 서버에 대한 impacket 및 sysadmin 권한이 필요합니다.
계속하기 전에 이 문서를 주의 깊게 읽어 주세요.
세 부분으로 구성됩니다:
라이브러리를 컴파일하거나 릴리스 페이지에서 다운로드할 수 있습니다 (x64).
핵심 DLL을 생성하려면 Visual Studio로 프로젝트를 가져온 후 (reciclador.sln) 컴파일하면 됩니다.
CLR 어셈블리를 생성하려면 먼저 C# 컴파일러를 찾아야 합니다:
Get-ChildItem -Recurse "C:\Windows\Microsoft.NET\" -Filter "csc.exe" | Sort-Object fullname -Descending | Select-Object fullname -First 1 -ExpandProperty fullname
그런 다음,
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /target:library .\assembly.cs
두 라이브러리가 컴파일되면 핵심 DLL(reciclador)을 대상 서버에 업로드합니다.
인증 옵션은 원본 mssqlclient와 동일합니다. mssqlproxy 옵션:
proxy mode:
-reciclador path Remote path where DLL is stored in server
-install Installs CLR assembly
-uninstall Uninstalls CLR assembly
-check Checks if CLR is ready
-start Starts proxy
-local-port port Local port to listen on
-clr local_path Local CLR path
-no-check-src-port Use this option when connection is not direct (e.g. proxy)
SQL 셸 내에서 파일 다운로드 및 업로드를 위한 두 가지 명령도 구현했습니다. 프록시 관련하여 네 가지 명령이 있습니다:
-clr 매개변수를 제공해야 합니다.-reciclador)를 제공해야 합니다.-local-port가 지정되지 않으면 1337/tcp 포트에서 수신합니다.프록시가 시작되면 proxychains를 연결할 수 있습니다 ;)
참고 #1: 비직접 연결(예: 중간에 프록시)을 사용하는 경우 -no-check-src-port 플래그가 필요하며, 서버는 소스 주소만 확인합니다.
참고 #2: 현재는 IPv4 대상만 지원됩니다 (DNS 또는 IPv6 주소는 지원되지 않음).
참고 #3: 주의해서 사용하세요! 현재 여러 개의 동시 연결을 설정하려고 하면 MSSQL 서비스가 충돌합니다.
중요: 클라이언트에서 Ctrl+C를 눌러 mssqlproxy를 중지하는 것이 중요합니다. 그렇지 않으면 서버가 충돌할 수 있으며 MSSQL 서비스를 수동으로 다시 시작해야 합니다.
Pablo Martinez (@xassiz), Juan Manuel Fernandez (@TheXC3LL) [ www.blackarrow.net - www.tarlogic.com ]
이 프로젝트에 포함된 모든 코드는 MIT 라이선스 조건에 따라 라이선스가 부여됩니다. mssqlclient.py는 Impacket을 기반으로 합니다.