-
[Windows] ALMind 1day ExploitSystem/Windows 2019. 3. 8. 04:25
이전 글에 이어서 이번에는 Exploit을 하는 과정에 대해서 상세히 정리해보도록 하겠다.
이전글>>[ESTSoft] ALMind 1day Analysis
[ Mona.py ]
mona는 Windows Exploit할 때 굉장히 유용한 툴이다.
Linux에서 Pwntools같은 존재라고 생각하면 된다.
mona는 외부 스크립트이기 때문에, 다운받아서 로드해줘야 한다.
이 과정은 인터넷에 상세하게 있으니 생략하도록 하겠다.
자, 그럼 어떻게 Exploit할 수 있을까?
먼저 ALMind의 Mitigation 상황을 확인해보도록 하자
[ Process Hacker ]
Process Hacker로 확인해보면, 아무런 보호기법이 적용되어 있지 않다.
그렇다면 가장 단순하고 효과적인 쉘코드를 이용해 보도록 하자
쉘코드는 PoC용도로 계산기를 실행시켜주는 코드로 준비했다.
[ Win32 exec Calc Shellcode ]
31 D2 52 68 63 61 6C 63 54 59 52 51 64 8B 72 30 8B 76 0C 8B 76 0C AD 8B 30 8B 7E 18 8B 5F 3C 8B 5C 1F 78 8B 74 1F 20 01 FE 8B 54 1F 24 0F B7 2C 17 42 42 AD 81 3C 07 57 69 6E 45 75 F0 8B 74 1F 1C 01 FE 03 3C AE FF D7
그럼 이제 쉘코드를 저장한 다음에 Shellcode의 시작주소로 RET를 조작하면 될까?
물론, Exploit은 가능하겠지만 범용성이 떨어지게 된다.
Target환경에 따라서 쉘코드가 밀릴수도 있고 더 당겨질 수도 있기 때문에 Exploit이 100% 보장될 수 없다.
따라서, [JMP ESP]가젯을 이용해서 Shellcode를 실행시켜주는게 좋다.
이러한 기법을 트램펄린 기법이라고 한다.
[ Find No ASLR ]
!py mona noaslr명령어를 이용해서 [JMP ESP]가젯을 찾을 모듈을 검색한다.
총 4개의 모듈이 검색되는데, 여기서는 마지막 'HMindmapApp.dll'에서 가젯을 찾도록 하겠다.
[ Find "\xff\xef" ]
!py mona find -s "\xff\xe4" -m HMindApp
명령어를 이용해서 가젯을 검색하면 밑에 결과가 쭉 나오는데,
주의해야할 점은 실행권한이 있는 Page에 위치한 가젯들만 사용해야 한다.
[ ESP 위치확인#1 ]
이후 Shellcode를 올릴 ESP위치를 확인해준다.
우리가 핸들링한 RET(0x41414141)가 실행된 후의 ESP가 어딜 가리키고 있는지 확인하는 과정이다.
저 빨간 박스 부분의 데이터를 복사한 뒤 파일에서 저 데이터를 찾아주면 된다.
[ ESP 위치확인#2 ]
헥스편집기로 열어서 데이터를 찾아보면 ESP위치가 [0x1CC4]임을 확인할 수 있다.
이제 [0x1CC4]에 쉘코드를 넣어주고, RET에는 [JMP ESP]가젯의 주소를 넣어주면 된다.
[ Save Shellcode ]
이렇게 RET공간에 "\x2D\xF1\x03\x01"을 저장하고
ESP공간에 Shellcode를 저장해주면 된다.
[ Exploit! ]
그리고 다시 파일을 실행시켜 주면 쉘코드가 동작하면서 계산기가 실행되게 된다.
이 계산기가 나의 첫 계산기였는데, 그때의 감동은 거의 뭐 말로 표현할 수 없다.
트레이닝을 통해 띄운 계산기지만, 다음에는 0Day를 증명하는 PoC로 띄어보는게 목적이다.
이 글을 보시는 분들 중 Windows Exploit분석을 연습 해보고 싶으시다면
이전글에 동일한 Crash파일이랑 제가 정리한 Exploit문서 올려둘테니 따라해보시길 바랍니다.
Happy Hacking! :)
'System > Windows' 카테고리의 다른 글
Universal Calc Shellcode (+ExitProcess) (0) 2020.01.26 Notepad++_v7.6.3 Command Injection (1) 2019.06.13 [Windows] ALMind 1day Analysis (3) 2019.03.08 댓글