meterpreter는 메타스플로잇 프레임워크(MSF, Metasploit Framework)에 포함되어 있는 페이로드로 확장된 기능을 수행하는 고급 페이로드이다.


/usr/share/metasploit-framework/lib/rex/post/meterpreter/extensions(scripts/meterpreter) 디렉토리에 meterpreter에서 지원하는 다양한 스크립트가 저장되어 있으며, 기존의 스크립트를 커스텀마이징하여 재활용이 가능하다.


메타스플로잇의 기본적인 페이로드로 공격을 수행하면 대상 시스템의 쉘을 획득한 상태에서 공격이 진행된다. 보통 대상 시스템의 쉘을 획득하면 다양한 공격을 수행할 수 있는 해킹 툴도 없고, 권한이 제한되어 있으므로 제한된 명령어만 사용이 가능하다.


하지만, meterpreter를 이용하면 메타스플로잇을 실행하는 환경(칼리 리눅스)에서 meterpreter shell이 로드되며, 로드된 상태에서 다양한 공격이 가능하다.


보통 취약점 공격을 수행 후 쉘을 획득하면 관리자가 아닌 일반 사용자의 권한을 획득한다. 하지만, meterpreter를 이용하면 일반 사용자에서 관리자로 권한 상승하는 코드가 미리 정의되어 있어 쉽게 권한 상승이 가능하다.


meterpreter 기능 : 확장 이름

희생자의 시스템에 특정 취약점 공격을 수행하기 위해 msfconsole에서 특정 취약점 공격 모듈을 사용한다. 취약점 공격이 성공하면 sessions -i 1 명령어를 입력해 meterpreter shell을 획득한다.


meterpreter shell에서 help 명령어를 입력하면 다양한 명령어를 지원한다. 여기서 눈여겨 봐야할 점은 상단의 제목인데, 제목에 따라 수행할 수 있는 명령어가 다르다.


use -l 명령어를 입력하면 meterpreter shell에서 이용할 수 있는 모든 제목(확장 이름)을 나열한다.


나열된 이름을 보면 help 명령어를 입력했을 때 보다 더 많은 확장 이름이 나오는데, 기본적으로 로드된 확장 이름은 제한되어 있다. 하지만, 필요에 따라 확장 이름을 추가할 수 있다.



meterpreter shell에서 use -l 명령어를 입력한 확장 이름 목록과

/lib/rex/post/meterpreter/extensions 디렉토리에 나열된 목록이 동일하다.


○ 확장 이름 : espia, extapi, incognito, kiwi, lanattacks, mimikatz, priv, python, sniffer, stdapi



meterpreter 기능 : 웹캠

희생자 시스템에 웹캠이 설치되어 있으면 웹캠 공격을 수행하여 시스템을 이용하는 사용자의 정보, 내부 직원 정보, 내부 구조 등을 볼 수 있다.


meterpreter shell에서 webcam_stream 명령어를 입력하면 웹캠으로 찍은 그림 파일이 바탕화면에 저장된다. 바탕화면에 저장된 파일을 열어보면 희생자 시스템 아이피 주소, 그림 파일 저장 시간, 그림 정보를 확인할 수 있다.



meterpreter 기능 : 이벤트 뷰어

윈도우 운영체제는 응용 프로그램, 보안, 시스템, Setup 등 각종 성공 및 실패, 오류, 경고 메시지를 이벤트 뷰어에 로그를 기록한다.


이벤트 뷰어는 악성코드 감염으로 인한 침해사고 발생 시 로그를 분석해 공격 흔적을 찾는 용도로 사용한다. 하지만, 공격자는 이 흔적을 지우기 위해 이벤트 뷰어의 모든 로그를 삭제한다.


meterpreter shell에서 clearev를 입력하면 희생자 시스템의 로그가 삭제된다. 실제로 삭제되었는지 확인하려면 대상 시스템에서 시작 > 실행 > eventvwr 명령어를 입력하면 된다.



meterpreter 기능 : 레지스트리

대상 시스템이 프로세르를 종료하거나 재부팅을 하면 meterpreter shell이 종료되어 더 이상 공격을 진행할 수 없다. 언제든지 재침투를 하려면 대상 시스템의 시작 레지스트리에 백도어가 실행되도록 조작해야 한다.


보통 백도어는 의심을 피하기 위해 시스템에 존재하는 이름을 사용한다. 백도어 파일을 svchost.exe 이름으로 변경한다.


meterpreter shell에서 upload svchost.exe "C:\\windows\\svchost.exe" 명령어를 입력해 백도어를 업로드하고 실행한다. 이후 reg setval 명령어를 이용해 시작 레지스트리에 백도어를 등록한다.


▶ 칼리리눅스 레지스트리


meterpreter 기능 : 권한 상승

meterpreter shell에서 getuid 명령어를 입력하면 현재 시스템의 사용자 권한을 보여준다. 사용자 권한이 SYSTEM 권한이라면 권한 상승을 할 필요는 없다. 하지만, SYSTEM 권한이 아니면 제한된 권한을 가지므로 권한 상승을 해야 한다.


권한 상승을 하는 방법은 두 가지가 있는데, SYSTEM 권한으로 실행중인 프로세스에 모든 meterpreter 코드를 이동시키는 방법과 getsystem 명령어를 이용하는 방법이 있다.


meterpreter shell에서 ps 명령어를 입력하면 대상 시스템의 프로세스 정보를 확인할 수 있다. 실행 중인 프로세스 목록 중 SYSTEM 권한으로 실행중인 프로세스의 아이디를 확인한다.


프로세스의 아이디를 확인했으면 meterpreter shell에서 migrate 프로세스아이디 명령어를 입력하면 일반 사용자 권한으로 실행중인 meterpreter가 시스템 권한으로 이동되어 실행된다.


이런 수동적인 과정 없이 자동으로 시스템 권한으로 상승해주는 getsystem 명령어가 존재한다. 명령어가 옵션을 지정하지 않으면 알아서 시스템 권한 상승을 한다.



meterpreter 기능 : 메모리 덤프

메모리는 사용자가 입력한 중요 정보를 확인할 수 있는 방법 중 하나로 시스템의 전체 메모리를 획득하면 많은 정보들을 평문으로 획득할 수 있다.


현재 실행되고 있는 인터넷 익스플로러 프로세스의 메모리 덤프를 수행하고 싶다면 인터넷 익스플로러의 프로세스 아이디를 확인하고, meterpreter shell에서 run process_memdump -p 3684를 입력하면 된다.


해당 명령어를 입력하면 공격자 시스템에 메모리 덤프 파일이 저장되고, 메모리 덤프 파일을 문자열로 추출해보면 사용자가 입력한 중요 정보를 확인할 수 있다.


meterpreter 기능 : 스크립트

/usr/share/metasploit-framework/scripts/meterpreter 디렉토리에 meterpreter shell에서 실행 가능한 스크립트가 존재한다.


스크립트는 루비 문법으로 meterpreter API로 구성되어 있다. 만약, 자신만의 스크립트를 만들고 싶다면 특정 스크립트를 복사하고, 특정 기능을 수행하는 API를 조사해 해당 스크립트에 반영하면 된다.


meterpreter shell에서 스크립트를 사용하려면 run 스크립트이름을 입력하면 된다.


scripts/meterpreter/checkvm.rb를 사용하고 싶다면 run checkvm 명령어를 입력하면 대상 시스템에 가상 머신으로 동작하는 시스템인지 확인할 수 있다.


스크립트를 보면 killav 스크립트가 존재하는데, 해당 스크립트를 대상 시스템의 안티 바이러스(백신 프로그램)를 비활성화해주는 기능을 한다.


원활한 공격을 수행하려면 백신 기능을 비활성화해야 한다. 하지만, run killav 명령어를 입력해도 안티 바이러스가 비활성화 되지 않는다.


보통 이 방법 보다 백도어에 베일 프레임워크를 적용해 안티 바이러스를 우회하는데 사용한다.



▶ 칼리리눅스 레지스트리

▶ Metasploit msfconsole 사용법 및 활용

▶ Metasploit(msfvenom) 쉘코드 디코딩

▶ XSSF(Cross Site Scripting Framework) 사용법

▶ Metasploit msfvenom 기능 및 사용법

  • 카카오톡-공유
  • 네이버-블로그-공유
  • 네이버-밴드-공유
  • 페이스북-공유
  • 트위터-공유
  • 카카오스토리-공유