일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 버퍼오버플로우
- PWN
- HackCTF
- 어셈블리어
- 웹해킹
- NewsClipping
- ctf
- 리눅스
- Next.js
- SQL Injection
- Nop Slide
- 뉴스클리핑
- Python
- RITSEC
- termux
- reversing
- buffer over flow
- Shadow 동아리
- requests
- Hackerschool
- writeup
- ftz
- CodeEngn
- BOF
- RITSEC CTF 2019
- 리버싱
- x64dbg
- 보안뉴스
- webhacking
- Linux
- Today
- Total
목록어셈블리어 (14)
Jaeseo's Information Security Story
13.exe - 정답은 무엇인가 프로그램 PE 분석을 해본다. PE 분석을 통해 .NET assemblies로 되어 있어 일반적인 디버거로는 확인이 불가능 한 것을 볼 수가 있다. 그래서 JetBrain에서 제공하는 dotPeek를 통해 분석을 진행한다. 일단 분석을 하기 전 프로그램의 목표를 알아본다. 비번을 입력하고 입력 값이 올바른 지 체크하는 프로그램이다. 이제 dotPeek를 통해 열어서 확인한다. 그 결과 위와 같이 분석이 되는 것을 확인할 수 있다. 이때 RijndaeSimple, RijndaeSimpleTest라는 두개의 Class를 발견하게 되는데 이 두개의 클래스를 들어가 분석을 해본다. RijndaeSimple먼저 들어가 분석을 해본다. 두가지의 함수가 발견이 되는데 Decrypt함수..
12.exe - Key를 구한 후 입력하게 되면 성공메시지를 볼 수 있다 이때 성공메시지 대신 Key 값이 MessageBox에 출력 되도록 하려면 파일을 HexEdit로 오픈 한 다음 0x???? ~ 0x???? 영역에 Key 값을 overwrite 하면 된다. 문제 : Key값과 + 주소영역을 찾으시오 Ex) 7777777???????? PE 분석을 통해 Packing이 되지 않았다는 것을 확인할 수 있다. 이제 X32DBG를 통해 분석을 해본다. 이제 여기서 문자열 검색을 통해 분석을 해본다. 검색을 통해 성공 메세지를 발견했다. 이때 메시지 주소로 들어가 분석을 해본다. Jne를 통해 성공 메시지를 출력 하는지에 대해 분기점이 갈리고 있는데 이때 위의 cmp eax.7A2896BF를 통해 비교 하..
11.exe - OEP를 찾으시오. Ex) 00401000 / Stolenbyte 를 찾으시오. Ex) FF35CA204000E84D000000 정답인증은 OEP+ Stolenbyte Ex) 00401000FF35CA204000E84D000000 프로그램 PE 분석을 일단 진행하여 본다. UPX로 Packing 되어 있는 것을 알 수가 있는데 UPX로 Unpacking을 진행한다. UPX로 Unpacking된 파일을 X32dbg로 열어보니 NOP으로 되어 있는 부분이 있다. Stolen Byte가 있으니 Packing된 파일을 통해 분석을 해본다. Upx로 unpacking 끝난 이후 POPAD로 레지스터를 복구하는 곳을 찾아 분석한다. Popad 이후 push를 하는 모습을 볼 수가 있는데 아직 OEP..
10.exe - OEP를 구한 후 '등록성공' 으로 가는 분기점의 OPCODE를 구하시오. 정답인증은 OEP + OPCODE ( EX) 00400000EB03 ) 디버깅을 하기전에 Packing이 되어 있는지 PE 분석을 해본다. 분석 결과 “Aspack”이라는 Packing 프로그램으로 패킹이 되어 있는 것을 확인할 수 있다. X32dbg로 분석을 통해 Unpacking을 한다. Pushad를 통해 레지스터를 stak에 올리고 있는 모습을 볼 수 있다. F8를 눌러 ESP의 변경이 되는 모습을 관찰한다. 이제 복호화 작업을 끝내고 popad를 통해 레지스터를 복구할 것이다. 이때 ESP주소를 기점으로 덤프를 뜨고 memory에서 access 될 때 Break Point를 걸어 관찰을 한다. 이제 F9를..
09.exe - StolenByte를 구하시오 Ex) 75156A0068352040 일단 PE 분석을 해본다. 그 결과 UPX로 Packing 되어 있는 것을 볼 수 있다. UPX로 UnPacking 한다. 이제 프로그램을 실행하여 분석을 한다. Upx로 Unpacking를 하고 나니 문자열이 다 깨지고 오류 메세지를 출력하고 있다. Upx에서 StolenByte를 일부 가지고 있어서 오류가 나는 것으로 예상이 된다. 그래서 이번에는 upx Unpacking을 진행하지 않고 디버깅을 진행하도록 한다. 일단 x32dbg로 분석을 한다. 실행을 해보면 처음 upx로 unpacking을 진행하는 모습을 볼 수 있다. Upx로 unpacking을 하면서 계속 반복을 하는 모습을 볼 수 있는데 F8과 Break ..
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 등) 이때 이러한 결..