CHSOP은 닷넷 디컴파일툴을 사용해서 풀어야 하는 문제이고 나같은 경우 정적분석만으로는 문자열 배합 방법을 모르겠어서 소스 수정이 불가피했다. reversing.kr CSHOP 풀이 CSHOP.exe를 실행시켜보면, 아래와 같이 빈 창이 뜬다. 일단, CSHOP은 닷넷 프로그램이기 때문에 IDA로는 분석이 불가하고 닷넷 디컴파일 툴이 필요하다. CodeEngn을 풀 때, 닷넷 프로그램이 한번 문제로 나온적이 있어서 그때 사용했던 dotPeek을 사용하기로 했다. 먼저 FrmMain을 살펴보면, 첫번째로 눈에 띄는 것은 _Click 함수에 특정 문자열이 저장되어 있다는 것이다. 정답값은 아니었다. 그리고 바로 위에 Form1_Load 함수가 있는데 문자값들이 비어있다. 폼로드라는 함수이름 특성 상, 어떤..
간단한 32bit exe인 '지뢰찾기.exe'에 스레드 내에서 메시지창을 실행시키는 DLL을 제작해 인젝션하는 인젝터를 제작해보려 한다. 지뢰찾기.exe를 사용한 특별한 이유는 없고 32bit 프로그램이라면 어떤것이든 (아주아주 예외적으로 내부에 kernel32.dll을 로드하지 않는 프로그램은 제외) 상관없다. - 빌드 : Visual Studio 2015 - 환경 : Windows10 x64, Windows7 x32 둘다 됨 인젝션시킬 dll 코드 인젝션시킬 dll 코드는 아래와 같다. dll이 인젝션되면 DllMain이 호출되고 DllMain이 왜 호출되었는지에 대한 인자값인 fdwReason이 DLL_PROCESS_ATTACH이면 (Dll이 프로세스에 로드되면) CreateThread로 ShowM..
이번 문제는 오토핫키 실행파일에서 key값들을 찾아내는 문제로, CRC 체크하는 부분을 하나하나 우회해주어야 되는 문제인 줄 알고 하루 온종일 삽질했던 문제이다. reversing.kr AutoHotkey1 풀이 주어진 오토핫키 실행 파일을 실행시켜보면, 아래와 같이 무언가 입력값을 받고 있다. 먼저 오토핫키에 대해 아주 간단히 살펴보면, 오토핫키는 매크로 프로그램 중 하나이다. 오토핫키 스크립트 확장자는 .ahk이고 오토핫키 프로그램을 설치하면 Compiler 폴더의 Ahk2Exe를 사용해서 ahk를 exe로 컴파일하게 된다. 그리고 컴파일된 exe파일은 원래라면 아래와 같이 RCdata 부분에서 평문 스크립트를 확인할 수 있다. 이때, 디컴파일을 막기 위해 패스워드를 따로 지정해서 컴파일을 하는 경우..
닷넷 디컴파일 툴로는 dotpeek 밖에 사용해보지 않았는데, 소스 수정이 안된다는 단점이 있었다. 물론 dotpeek에서 export를 시키면 비쥬얼 스튜디오 프로젝트 파일로 저장이 되고 여기서 소스 수정 후 빌드를 다시 해주어도 되지만, 비쥬얼 스튜디오와 닷넷 버전? 호환이 안되는 건지 빌드가 제대로 안되는 경우가 있었다. 그래서 구글링하던 중 닷넷 디컴파일 툴로 많이 사용되는 .Net Reflector에 reflexil 툴을 추가시키면 간단하게 소스 수정을 해볼 수 있다는 것을 알게되어 간단히 reflexil 추가 방법과 사용법을 여기에 정리한다. reflexil 다운로드 아래 링크에서 reflexil을 다운로드받을 수 있다. reflexil 다운로드 페이지 sailro/Reflexil The .N..
드라이버 파일이 같이 주어진 만큼, 이번 기회에 Windbg로 커널 디버깅 하는 연습을 해보려고 했는데 결국 제대로 실행시키는데 실패해서 IDA로 겨우겨우 풀었다. reversing.kr WindowsKernel 풀이 관리자 권한으로 실행시키면, StartService 관련 에러가 발생한다. StartService에 대한 에러코드를 보기위해 간단히 코드를 짠 후 어떤 에러인지 봤는데, 에러코드 0x4fb (1275)로 ERROR_DRIVER_BLOCKED 에러이다. #include #include int main() { SC_HANDLE schSCManager = NULL; SC_HANDLE schService = NULL; char* Filename = "C:\\Users\\leefo\\Desktop\..
초반에 문제들만 Easy가 붙은 줄 알았는데 중간에 쉬어가라는 문제인지 Easy ELF 문제가 있다. 문제 이름대로 정말정말 쉬워서 푸는데 15분 컷이 가능했다. 지금까지 푼 문제중에서는 제일 쉬운 것 같다(+Easy Crack). reversing.kr Easy ELF 풀이 처음에는 아무래도 ELF인 만큼 gdb로 풀어야 하는 줄 알았다. 실행시키고 입력값을 주면, 'Wrong'이 출력된다. 그런데 심볼이 없어서 디버깅하기가 힘들었기 때문에 그냥 IDA로 보기로 했다. main함수를 보면 Wrong으로 분기하는 조건으로 sub_8048451의 리턴값을 확인하고 있다. sub_8048451을 헥스레이로 봐보면, 0x804A020이 첫번째자리 값이라는 것은 사실 추론이긴 하지만... 간단한 xor 연산으로..
ntdll.dll의 NtQueryInformationProcess를 활용한 안티디버깅 방법과 우회 방법에 대해 알아본다. 참고로 NtQueryInformationProcess는 zwQueryInformationProcess의 wrapper 함수로 동일하다고 생각하면 된다. NtQueryInformationProcess 안티디버깅 방식은 2번째 인자인 PrecessInfomrationClass에 어떤 값을 주느냐에 따라 총 3가지 방법으로 나뉘게 된다. (0x7/0x1E/0x1F) __kernel_entry NTSTATUS NtQueryInformationProcess( IN HANDLE ProcessHandle, IN PROCESSINFOCLASS ProcessInformationClass, OUT PV..
Twist1은 여러 안티디버깅 기법을 확인할 수 있는 문제인데 안티디버깅 플러그인도 안먹히고 코드가 중간중간 풀리는게 많아서 bp도 여러곳에 걸어주어야 하고 게다가 왜인지는 모르겠지만, OEP를 찾은 후 덤프를 떠주고 진행했는데 중간에 빠진 코드가 있어서 이것 때문에 삽질 시간이 더 길어졌다. 겨우 전부 우회를 한 후에도 키젠 부분에 페이크가 많아서 풀다보면 굉장히 지치는 문제이다. 확실히 푼사람 수가 확 줄어든 것을 보니 인내심을 충분히 갖고 풀어야 하는 문제인 것 같다. reversing.kr Twist1 풀이 이번 문제는 Windows x32 환경에서 풀어야 하는 문제로 Twist1.exe를 실행시키면 Input 값을 받고 있다. 일단, 패킹이 된 것인지? IDA로 디컴파일이 잘 안된다. pusha..
PE 구조를 생각하고 풀면 좋은 문제이다. reversing.kr ransomware 풀이 이번문제는 랜섬웨어 문제이다. 설마 뭐 진짜 내파일을 암호화할꺼라고 생각하진 않았지만 혹시 모르기 때문에 그냥 가상환경에서 진행했다. run 파일을 실행시키면 아래와 같이 zip파일에 들어있던 파일 file을 암호화했다고 협박(?) 메시지가 나온다. 처음에 key 문자열이 쓰인 함수를 찾아서I 보는데 함수 시작 부분에 아래 반복 코드가 엄청 크게 있다. 뭔가 했는데 그냥 파일 크기를 키우고 혼선?을 주기 위함인 것 같으니 딱히 신경쓰지 않아도 문제 풀이에는 지장이 없다. 위 코드를 빼면 함수 자체는 별로 크지 않다. 반복문이 계속 나오게 되는데 첫번째 반목문에서는 암호화된 file 데이터를 1바이트씩 가져와서 0x..
CodeEngn부터 reversing.kr Position 문제까지는 2017년에 작성해놨던 풀이를 옮겼던 것인데 (새로풀면서 거의 풀이가 바꼈지만) Direct3D FPS부터는 지금부터 틈틈히 새로 풀 예정이다. 계속 리버싱을 해왔던 것은 아니지만... 2017년에는 이 문제를 못풀었었는데 이번엔 풀 수 있게된 것을 보니 그래도 어느정도는 발전했나보다 :D reversing.kr Direct3D FPS 풀이 이번 문제 zip에는 간단한 FPS 게임 파일과 data 폴더, D3DX9_43.dll 이 들어있다. 문제가 무엇인지 안나와있어서 무얼 해야하는 것인지 감이 오지 않기 때문에 일단 맵을 좀 살펴보기로 했다. 좀 더 들어가니 제작자가 카라 한승현 팬인지 한승현 사진과 걸어다니는 고구마들이 있다. 총을..
아주아주 옛날 취약점이지만, 실제 크래쉬 덤프에서의 기초적인 bof를 이해하고 익스플로잇 코드를 짜보는 시뮬레이션을 하기에는 이만한 취약점도 없는 것 같다. 요즘 소프트웨어는 패치 이력도 오래됐고 기본적인 보안코딩은 어느정도 갖추고 있기 때문에 이런류의 간단한 bof는 거의...... 없는 것 같다. '.asx' Local Stack Overflow 취약점 정보 곰플레이어의 오래된 취약점이고 asx파일로 인해 bof가 일어난다는 사실만 알면 사실 분석하기 엄청 어려운 취약점은 아니지만, 최대한 해당 사실을 모른다고 가정하고 크래쉬 파일만 가지고 분석을 해보았다. 크래쉬 파일은 해당 버전의 곰플레이어를 BFF 퍼저로 돌려서 얻었다. - 취약 프로그램: Gom Player - 버전: 2.0.12.3375 -..
Position 문제부터는 elf를 제외하고는 푼 수가 1000이하로 떨어진다.. 확실히 Position부터는 좀 문제가 까다로워지는 것 같은게 input name으로 serial을 생성하는 과정이 좀 복잡해서 코드 짜기가 좀 헷갈렸다. reversing.kr Position 풀이 Position.exe를 실행시키면 다음과 같이 Name과 Serial을 입력받는다. 키젠 문제답게 시리얼이 주어지고 그에 맞는 Name값을 구해야 하는 문제이다. 친절하게 ***p 라고 알려주며 끝자리 p와 총 길이가 4임을 알려주었다. Position 창에서 "Wrong"이라는 문자열이 있었으므로 해당 문자열이 사용되는 함수로 먼저 가본다. 참고로 Wrong은 유니코드로 저장되어 있기 때문에 IDA 문자열 보기(Open S..