일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- writeup
- CodeEngn
- 뉴스클리핑
- SQL Injection
- x64dbg
- requests
- Linux
- 웹해킹
- 버퍼오버플로우
- BOF
- buffer over flow
- 어셈블리어
- termux
- 리버싱
- RITSEC
- reversing
- PWN
- Python
- ctf
- Shadow 동아리
- NewsClipping
- RITSEC CTF 2019
- webhacking
- Hackerschool
- Nop Slide
- Next.js
- HackCTF
- ftz
- 리눅스
- 보안뉴스
- Today
- Total
목록Write UP/Codeengn - basic (16)
Jaeseo's Information Security Story
07.exe - OEP를 구하시오 Ex) 00400000 OEP 코드를 알기 위해 PE 분석을 해본다. 현재 UPX로 Packing이 되어있어 정상적인 OEP를 알 수가 없다. OEP를 알기 위해 UPX로 Unpacking를 해준다. 그리고 ExeinfoPE를 통해 다시한번 분석해본다. EP는 00012475 라는 것을 알게 되었다. 또한 Image Base는 01000000인 것을 알 수 있다. OEP는 Image Base + EP 하여 구한다. 정답: 01012475
07.exe - 컴퓨터 C 드라이브의 이름이 CodeEngn 일경우 시리얼이 생성될때 CodeEngn은 'ß어떤것'으로 변경되는가 일단 프로그램을 디버깅 하기 전 PE분석을 해본다. ExeinfoPE를 통해 Not packed가 되었다는 것을 확인함. 프로그램을 실행시 시리얼 키를 입력 받고 확인을 하는 프로그램으로 추정됨. X32dbg로 실행하여 분석을 시작한다. 일단 Check 버튼을 눌렀을 때 하드디스크의 이름 정보를 가져오는 함수가 작동될 것으로 예상된다. 이때 keyword(volume, disk, information, get 등)을 가지고 인터럽트를 검색해본다. 이때 “GetVolumeInformationA” 함수를 발견하게 되는데 이 함수를 통해 볼륨의 이름을 가져오는 것으로 추정이 된다...
06.exe - Unpack을 한 후 Serial을 찾으시오. (정답인증은 OEP + Serial) 프로그램을 실행을 하면 이런 식으로 Input Box가 있고 입력을 하면 Serial를 체크를 하는 프로그램이다. 일단 디버깅을 하기 전에 PE 분석을 해본다. PE 분석을 통해 UPX를 통해 Packing이 되어있다는 것을 확인했다. UPS unpacking을 해본다. 이제 unpacking된 파일을 가지고 x32dbg로 분석을 해본다. 일단 프로그램을 동작 시켜 GUI가 구성이 시작되는 main 함수부분을 찾아본다. 인터럽트가 발생하는 것을 검색해본다. 이때 main에서 동작될 것으로 예상되는 GUI를 만드는 함수에 관련된 키워드를 검색해본다. 키워드(gui, box, dialog 등) 이때 이러한 결..
05.exe - 이 프로그램의 등록키는 무엇인가 프로그램을 실행하면 등록키를 입력하는 inputbox와 name을 입력하는 inputbox가 있고 이것을 이용하여 등록을 진행 하는 프로그램으로 보인다. 이제 프로그램 분석을 시작 한다. 맨 처음 PE분석을 통해 패킹이 되어있는지 확인을 해보는 과정을 진행 해본다. PEview와 Exeinfo PE 툴을 통해 이프로그램은 UPX로 패킹이 되어있는걸 확인 할수 있다. UPX를 사용하여 언패킹을 진행해본다. ExeinfoPE를 통해 Unpack이 된 것을 볼수 있다. 이제 X32DBG로 분석을 해본다. String references 검색으로 통해 등록키로 의심이 되는 값 또는 인증관련 메시지와 관련된 값을 찾는다. 잘못된 입력 값을 입력 했을 때 뜨는 키워드..
04.exe - 이 프로그램은 디버거 프로그램을 탐지하는 기능을 갖고 있다. 디버거를 탐지하는 함수의 이름은 무엇인가 프로그램을 실행을 해본다. 일정 시간동안 딜레이를 가지고 정상적으로 동작 하는지에 대해 체크 하는 모습을 볼수 있다. X32DBG에서 실행해본다. 디버깅 환경에서는 “디버깅 당함”이라는 문자를 계속 출력하는 모습을 볼수 있다. 이제 프로그램을 분석 해본다. 계속 반복적으로 작동을 하면서 디버거 프로그램을 탐지하는 기능을 담당 하는 함수를 호출하는 것으로 예상된다. 이때 인터럽트를 검색해본다. 디버그를 가르키는 키워드 dbg,debug 등을 검색한다. 그결과 이와 같은 함수들을 발견하게 되는데 디버그를 탐지하는 함수로 의심이 되는 “IsDebuggerPresent”에 들어가 살펴본다. 그리..
03.exe - 비주얼베이직에서 스트링 비교함수 이름은? 프로그램을 시작하면 이러한 알림창이 뜨게 되고 이러한 화면을 통해 Regcode에 비밀번호를 입력하여 문제에서 요구하는 “비주얼베이직에서 스트링 비교함수”를 이용하여 비밀번호가 맞는지 체크를 하여 작동하는 형식이다. 이때 X32DBG를 이용하여서 비밀번호를 입력시 발생하는 인터럽트를 체크 하여 확인 하면 된다. 아무 키값을 입력한다음 Regisrieren 버튼을 눌러 “비주얼베이직에서 스트링 비교함수”를 실행하여 인터럽트를 발생 시킨다. 위와 같은 화면이 뜨게 되고 STRING 비교를 하게 된 것을 확인 할수 있다. 이때 X32DBG에서 인터럽트를 검색을 하여 어떤 호출이 발생했는지 검색을 한다. 다양한 인터럽트가 검색이 되어진다. 이때 Strin..
02.EXE - 패스워드로 인증하는 실행파일이 손상되어 실행이 안되는 문제가 생겼다. 패스워드가 무엇인지 분석하시오 일단 프로그램을 실행 해본다. 관리자 권한으로도 실행 해본다. 위와 같은 내용으로 프로그램이 손상이 되어 디버깅도 불가능 하다는 것을 알게되었다. 그렇기 때문에 HEXEDITER로 열어서 분석을 한다. 일단 시작을 보면 PE header 부분이 보이게 된다. 대략 이정도 부분이 PE Header 부분으로 보인다. 이제 PE Header, section Header 부분을 지나 section Data 부분을 분석 해본다. 이쪽을 보면 DialogBox를 실행하고 MessageBox를 시행 SendMessage등과 같이 다양한 작업을 수행을 한다는 것을 알 수 있다. 좀더 내려 보다 보면 AD..
01.exe 풀이 해설 - HDD를 CD-Rom으로 인식시키기 위해서는 GetDriveTypeA의 리턴값이 무엇이 되어야 하는가 일단 프로그램을 구동 한 다음 구조를 살펴본다. 구조를 살펴보니 GetDriveTypeA를 실행 한 다음 리턴 값을 받고 비교를 하여 CD-Rom인지 아닌지를 확인 하는 프로그램 이다. 일단 작동이 시작 되면 메시지 박스를 출력한 다음 GetDriveTypeA API를 통해 리턴값을 eax에 저장을 하게 되는데 이때 인터넷 검색을 통해 어떤 리턴 값이 Cd-Rom 인지를 찾아 보았다. CD-ROM은 eax에 5를 리턴 받아야 한다는 사실을 알게 되었다. 그런 다음 GetDriveTypeA API를 실행 한다음의 레지스터값과 그다음에 실행되는 어셈블리어를 분석하였다. GetDri..