상세 컨텐츠

본문 제목

Try Hack Me 해킹 모의 침투 #2

TryHackme

by 0xmh 2022. 5. 19. 19:01

본문

728x90

!!!모의 침투에서 쓰이는 tool들은 비윤리적인 목적을 위해서도 쓸 수 있기 때문에 여러분이 저의 블로그 읽으시고 그 tool들로 뭐 하실지 그 책임은 저에게 없음을 알려드립니다. 여러분이 책임을 지셔야 되고, tool이나 exploit를 사용하기 전에 항상 코드를 잘 확인하고 아이피 주소가 맞는지 확인 잘 하셔야 됩니다.!!!!

안녕하세요~ 오늘은 윈도우 모의 침투를 하겠습니다! 지난주는 Hack The Box를 했기 때문에 오늘은 Try Hack Me를 봅시다!

Try Hack Me 좋은 점은 가이드 질문이 있다는 것이에요. 특히 모의 침투를 처음으로 접하는 사람에게는 좋은 것이라고 생각합니다.

오늘 모의 침투도 RCE 취약점을 발견할 것이고, 권한상승은 unquoted service path vulnerability입니다!

Nmap 스캔부터 시작합시다! 보시다시피 웹페이지 두 개나 있네요! 그중에 8080포트는 HttpFileServer httpd 2.3을 운영하고 있습니다. Nmap 스캔을 통해 버전을 알아볼 수 있는 경우에는 그 버전의 취약점이 있는지 없는지부터 확인하는 것이 좋습니다!

당연히 구글링도 가능하지만 Kali linux으로 searchsploit라는 명령어로 취약점 데이터베이스를 확인할 수 있습니다. RCE 취약점이 있네요!!

취약점 코디를 보기: searchsploit -x 49125.py

취약점 다운로드하기: searchsploit -m 49125.py

우리가 사용할 취약점은 다음과 같습니다! Description을 읽어보니 우리 Kali linux 머신에서 웹서버를 hosting해야 되고, netcat이라는 프로그램이 무조건 있어야 된다고 하네요. (Netcat 은 TCP 나 UDP 프로토콜을 사용하는 네트워크 연결에서 데이터를 읽고 쓰는 유틸리티 프로그램입니다)

실행시키기 전에 당연히 아이피 주소와 포트를 바꿔야 됩니다 ( SteelMountain 머신 아이피로). 취약점 개발 및 설명은 링크를 누르시고 확인하실 수 있습니다. (https://subscription.packtpub.com/book/networking_and_servers/9781786463166/1/ch01lvl1sec20/vulnerability-analysis-of-hfs-2-3

간단하게 설명해드리자면 Rejetto의 다음 function이 문제입니다. 이 function는 Null byte를 제대로 다룰 수 없으므로 null byte를 입력한 다음에 우리가 원하는 코드를 입력할 수 있습니다.

function findMacroMarker(s:string; ofs:integer=1):integer; begin result:=reMatch(s, '\{[.:]|[.:]\}|\|', 'm!', ofs) end;

아이피 주소와 포트를 제대로 바꿨으니 해킹 시작 고!

왼쪽은 사진은 python 코드를 실행시키고, 오른쪽 아래에 있는 사진은 우리의 웹서버입니다. 파이썬 코드를 처음으로 실행시킬 때는 netcat 다운로드가 시작되고 (GET /nc.exe HTTP/1.1 200. 200은 파일을 잘 찾았다는 뜻입니다) 이제 netcat를 다운로드했으니 파이썬 코드를 다시 실행시켜야 되고, 실행시키면 reverse shell 받습니다!! SteelMountain 윈도우 머신을 성공적으로 침입했습니다!

Linux 머신은 root가 되는 것이 목표인 것처럼 Window는 nt\authority system이 되어야 합니다! 그래서 다음 단계는 권한상승입니다!

첫 번째 모의 침투는 간단하게 linpeas이라는 tool를 소개하였으나 쓰지는 않았습니다. Windows 시스템을 위한 비슷한 프로그램이 있는데 이름은 winpeas입니다! 한번 써봅시다! 당연히 먼저 winpeas를 우리가 침입한 머신에서 다운로드해야 되는데 다음 명령어로 가능합니다! certutil 말고도 powershell로도 다운로드할 수 있습니다.

winpeas를 실행시켜보니 이렇게 나옵니다. 밑에 있는 설명글을 잠깐 같이 봅시다. winpeas와 linpeas 좋은 점은 색깔이 같이 나온다는 것입니다. 따라서 winpeas가 가능한 권한상승 방법을 알아낼 수 있다면 그것은 빨간색으로 뜰 것입니다.

당연히 권한상승 방법이 많지만 우리가 오늘 푸는 모의 침투 취약점은 unquoted service path vulnerability입니다. 설명은 다음과 같습니다! If the path to the service binary is not enclosed in quotes and contains white spaces, the name of a loophole for an installed service is Service Unquoted Path. As a result, a local user will be able to elevate the privilege to administrator privilege shell by placing an executable in a higher level directory within the path

더 자세하게 봅시다. 취약점 path는 다음과 같습니다.

C:\Program Files (x86)\IObit\Advance SystemCore\ASCService.exe. 따옴표가 없기 때문에 윈도우 API는 ASCService.exe 어디에 위치해 있는지를 가정해야 됩니다. 따라서 API는 다음과 같이 .exe를 찾으려고 합니다.

C:\Program.exe

C:\Program Files (x86)\IObit.exe

C:\Program Files (x86)\IObit\Advanced.exe

C:\Program Files (x86)\IObit\Advanced SystemCare\ASCService.exe

winpeas가 알아봐 준 것을 보고 우리에게 WriteData\CreateFile 권한도 있네요! 무슨 말이냐면 우리에게 악성 .exe 프로그램을 이 path 안에 만들 수 있다는 말입니다.

왼쪽 밑에 있는 사진은 우리 먼저 악성 .exe 파일을 만들어야 합니다!

왼쪽 위에 있는 사진은 아까처럼 certutil으로 악성 .exe 파일을 다운로드합니다

오른쪽 위 사진은 우리 웹서버입니다.

우리 악성 .exe를 실행 시 키 위해서는 먼저 이 서비스를 종료 시킨 다음에 다시 start해야 합니다!

net stop AdvancedSystemCareService9

net start AdvancedSystemCareService9

start 명령어를 실행시키자마자 오른쪽 밑에 있는 사진을 보면 새로운 reverse shell 연결이 들어옵니다. whoami를 확인해보니 authority system입니다! 권한이 가장 높은 유저가 되었고 flag를 얻을 수 있습니다!!

요약합시다!

Hacker 입장에서 우리는 오늘 무엇을 배웠을까요?

1) 해킹 시작하기 전에 충분한 정보를 찾아야 되는 것이 가장 중요합니다. 무작정으로 악성코드가 마치 무슨 총인 것처럼 총알을 쏘면 안 됩니다. 웹서버가 있는 경우에는 항상 버전을 잘 확인합시다!

2) 권한 상승은 winpeas 하고 linpeas 좋은 tool입니다. 오늘 배운 권한 상승 방법 말고도 다양한 방법을 winpeas가 확인해 줍니다.

방어팀 입장에서 오늘 무엇을 배웠을까요?

1) 버전을 무조건 무조건 무조건 무조건!!!!! 항상!!!!! 바로!!!!!!! 업데이트합시다.

2) 오늘 배운 권한 상승 방법 첫 번째 실수는 일반 유저에게 authority system 권한으로 서비스 종료 시키고 start할 수 있다는 것입니다. 아울러 그 일반 유저에거 CreateFile 권한까지 있었습니다.

3) path에 공백이 포함된 서비스는 path를 따옴표로 묶어야 합니다.

4) 프로그램 제어 및 스크립트 차단을 통해 시스템에서 코드 실행을 차단해야 합니다.

'TryHackme' 카테고리의 다른 글

Try Hack Me 해킹 모의 침투 #3  (0) 2022.05.19
해킹/정보 보안을 배우려면 가장 빠른 방법!  (4) 2022.05.19

관련글 더보기