0x02 Reverse Engineer(126)
-
Reversing.kr WindowKernel 상세분석2
잡담 : 첫 번째 바이너리에서 플래그 획득에 대해서는 별다른 소득이 없었었다. 그렇다면, sys파일이 중요하다는 것이라는 것을 알게 되었다. ( 이까지 알게 된건 몇개월 전이지만, 코드 분석을 완벽하게 하지 않아서 이때까지 풀지 못하였었다.) 이전글에서 적었던걸로 기억나지만, 한번 더 기술해본다. SYS파일의 엔트리는 DriverEntry이다.그리고 __security_init_cookie는 윈도우즈 환경에서의 BOF 방지에 사용되는 카나리이며, 이 카나리는 4바이트 이상의 배열에서만 동작하게 되며, 함수프롤로그에서 ebp와 xor를 취하여 백업을 시켜둔뒤, 함수 에필로그에서 검증을 하는 것으로만 알고 있었는데, 직접 들어가보니 무조건 xor ebp는 아닌 것을 알게 되었다. int __security_..
2018.05.05 -
Reversing.kr WindowKernel 상세분석
WindowsKernel 문제를 풀기전 삽질했던 거에 대해서 적어보려한다. 우선 WindowsKernel 압축을 해제하면, 두개의 파일이 떨어진다.WindowKernel.exeWinker.sys WindowKernel.exe에 Winker.sys가 dll로 쓰이게 된다.DLL과 sys는 파일구조는 둘다 PE포맷이다. 하지만, 조금 다르다. sys파일은 디바이스 드라이버로 동작하며, 엔트리 포인트가 DriverEntry로 시작된다. 그리고 DeviceAttach, DeviceRemove, Deviceloctl, Read, Write 등의 OS에서 장치를 제어하기 위한 인터페이스 함수를 구현한다. 디바이스 드라이버이기 때문에 커널모드에서 수행되고, 모든 프로그램에 동일한 인스턴스를 보여준다.응용프로그램은 직..
2018.05.05 -
WindowsKernel
보호되어 있는 글입니다.
2018.05.05 -
Winkernel 문제 풀기 전 공부한 사항
[ 프롤로그 ]Reversing.kr의 WindowKernel문제 자체의 라이트업은 공개하지 않을것이며, 이 문제를 풀기 위해 사전적으로 공부했던 내용을 정리하여 올려본다. aka (삽질 && 지식 경험치 쌓기) WindowKernel 압축 해제 하면 두개의 파일을 획득할 수 있다. 1. WindowKernel.exe2. Winker.sys 바이너리를 실행하면 입력조차 할 수가 없다. 입력을 못하는 대신, 힌트를 떨궈준다. OpenSCManager에서 에러가 발생하였다고한다. OpenSCManager함수는 악성코드를 분석할 때 종종 봐왔던 함수이다.하지만, 이 함수는 비단 악성코드에서만 로드되는 함수는 아니다.무조건 이게 있다고 오!! 악성코드!! 이러면 안되는 것이다. 여튼 이 함수는 서비스를 등록한 ..
2018.05.04 -
ImagePrc
보호되어 있는 글입니다.
2018.05.04 -
Rootme ch25 C++ Basic
c++ 관련 문제를 며칠전에 풀고 rootme에서 c++문제를 풀어보기로 하였다. 시간 소요 : 15분(브레이크포인트를 검증하기 위해 걸지 않고 하니 시간이 오래 걸렸다. 대회에서는 이렇게 하지 않아야 겠다.) 루틴이 비교적 쉬운 문제였다고 본다. 전체적인 흐름은 다음과 같다.1. 매개변수 argc!=2이면 프로그램이 종료된다.2. 입력된 매개변수 argv[1]이 있으면 정상적인 흐름을 진행할 수 있다. 3. 입력된 매개변수와 상관없이 string객체에 생성된 문자열의 길이를 체크한다.4. 문자열은 힙에 할당된다. 메인함수부분이다.argc!=2가 아니면 실패 관련 구문으로 분기하게 된다. 실패 구문 매개변수가 2개 들어갔을 경우 allocator와 string클래스가 눈에 보인다. string으로 무엇인..
2018.05.03