일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- RITSEC
- 뉴스클리핑
- writeup
- 웹해킹
- Next.js
- Nop Slide
- buffer over flow
- ftz
- ctf
- SQL Injection
- CodeEngn
- 어셈블리어
- x64dbg
- 리눅스
- NewsClipping
- HackCTF
- 버퍼오버플로우
- Shadow 동아리
- BOF
- PWN
- reversing
- webhacking
- termux
- 보안뉴스
- Python
- 리버싱
- Hackerschool
- Linux
- requests
- RITSEC CTF 2019
- Today
- Total
목록reversing (18)
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 등) 이때 이러한 결..
Reversing.kr의 Easy Keygen 문제 입니다. 일단 문제를 다운 받으면 ReadMe.txt 파일과 Easy Keygen.exe 파일이 있습니다. 일단 ReadMe.txt 파일을 읽으면 내용은 아래와 같습니다. ReversingKr KeygenMe Find the Name when the Serial is 5B134977135E7D13 문제를 보니 시리얼 5B134977135E7D13이 나올때의 이름을 찾으라는 문제입니다. 일단 pe 분석을 해서 패킹이 되어 있는 지를 확인 해봅니다. C++로 짜여 있고 Packing과 같은 조치는 안되어 있는 것으로 보입니다. 이제 프로그램을 실행해보고 IDA로 정적 분석을 해봅니다. 매우 간단한 프로그램으로 보입니다. name을 입력하면 name가지고 알..
PUSH, POP 스택에 값을 넣는 것이 PUSH 스택에 있는 값을 가져오는 것이 POP PUSHAD , POPAD 모든 레지스터를 PUSH 하고 POP 하라는 명령어 ex) PUSHAD == PUSH EAX, PUSH EBX, PUSH ECX... MOV 값을 넣어주는 역할 ex) MOV eax,1 == eax에 1를 넣는 명령어 LEA LEA는 주소를 가져온다. MOV는 값을 가져온다. ex) esp+8 : 0x123456 , *esp+8 : 1234 LEA eax,esp+8 -> eax == 0x123456 MOV eax,esp+8 -> eax == 1234 ADD source 에서 destnation으로 더해라 ex) ADD source,destnation SUB source 에서 destnati..
RAX(64bit) -> EAX(32bit) -> AX(16bit) -> AH(8bit - high) - AL(8bit - low) Accumulator for operands and results data 주로 곱셈, 나눗셈에 사용되며, 함수의 반환값을 저장(리턴값) RBX(64bit) -> EBX(32bit) -> BX(16bit) -> BH(8bit - high) - BL(8bit - low) Pointer to data in the DS segment ESI, EDI 와 결합해 인덱스에 사용됨. RCX(64bit) -> ECX(32bit) -> CX(16bit) -> CH(8bit - high) - CL(8bit - low) Counter for string and loop operations 반..
05.exe - 이 프로그램의 등록키는 무엇인가 프로그램을 실행하면 등록키를 입력하는 inputbox와 name을 입력하는 inputbox가 있고 이것을 이용하여 등록을 진행 하는 프로그램으로 보인다. 이제 프로그램 분석을 시작 한다. 맨 처음 PE분석을 통해 패킹이 되어있는지 확인을 해보는 과정을 진행 해본다. PEview와 Exeinfo PE 툴을 통해 이프로그램은 UPX로 패킹이 되어있는걸 확인 할수 있다. UPX를 사용하여 언패킹을 진행해본다. ExeinfoPE를 통해 Unpack이 된 것을 볼수 있다. 이제 X32DBG로 분석을 해본다. String references 검색으로 통해 등록키로 의심이 되는 값 또는 인증관련 메시지와 관련된 값을 찾는다. 잘못된 입력 값을 입력 했을 때 뜨는 키워드..
04.exe - 이 프로그램은 디버거 프로그램을 탐지하는 기능을 갖고 있다. 디버거를 탐지하는 함수의 이름은 무엇인가 프로그램을 실행을 해본다. 일정 시간동안 딜레이를 가지고 정상적으로 동작 하는지에 대해 체크 하는 모습을 볼수 있다. X32DBG에서 실행해본다. 디버깅 환경에서는 “디버깅 당함”이라는 문자를 계속 출력하는 모습을 볼수 있다. 이제 프로그램을 분석 해본다. 계속 반복적으로 작동을 하면서 디버거 프로그램을 탐지하는 기능을 담당 하는 함수를 호출하는 것으로 예상된다. 이때 인터럽트를 검색해본다. 디버그를 가르키는 키워드 dbg,debug 등을 검색한다. 그결과 이와 같은 함수들을 발견하게 되는데 디버그를 탐지하는 함수로 의심이 되는 “IsDebuggerPresent”에 들어가 살펴본다. 그리..