level19번의 문제입니다. 이 프로그램은 키 값을 알아오는 것이 아닌 새로운 문제였습니다. 이프로그램이 며 밀리세컨드 후에 종료 되었는가를 물어보았으니 종료하는 시점을 찾으면 되겠습니다. 실행을 하면 메시지박스가 하나 뜨고 한 10초 정도 있다가 프로그램이 종료가 됩니다. Exeinfo PE를 보면 EP Section에서 UPX1이 보입니다. PEview 를 사용하여 보면 UPX로 패킹이 되어있는 것을 볼 수가 있습니다. 처음에는 수동으로 언패킹을 하려고 했는데 코드가 너무 복잡해서 실패하고 그냥 upx툴을 이용했습니다. 크기를 보면 366KB -> 598KB 로 증가 했습니다. PEview 로 다시보면 깔끔하게 섹션 부분이 나타난 것을 볼 수가 있습니다. 오른쪽의 그림은 OEP(00417770)입니..
level18문제를 보면 Serial값을 구하는 것입니다. 실행을 했더니 "You serial is Wrong, try again"을 띄웁니다. Exeinfo PE를 실행하면 어떤 컴파일러를 이용했는지 출력이 안되네요. 일단 분석을 진행하겠습니다. GetDlgItemTextA에 BP를 걸고 실행을 합니다. 문제에 나온 것과 같이 CodeEngn을 Name으로 주고 Serial은 임의로 123을 주겠습니다. 실행을 하면 문자열을 입력받고 다음 줄부터 분석이 가능합니다. 쭉 내려오다 보면 00401141~00401146 줄을 보면 name으로 입력한 CodeEngn을 인자로 주고 00404058 함수를 실행하는데, 들어가서 분석을 해보겠습니다. 00404058 함수의 전체 모습입니다. 눈으로 훑어봤을 때 X..
level 17번 문제입니다. 그 전의 문제들과 다르게 시리얼 값을 알려주고 Name을 찾는 문제입니다. 실행을 해봤더니 name에는 1~2글자를 넣으면 오류가 납니다. 3글자 이상을 허용하는 것 같습니다. Exeinfo PE를 실행하면 패킹이 되어있지 않습니다. OEP는 0045C714입니다. 문자열이 있는 루틴에 BP를 걸고 실행을 하면 문자열을 받습니다. 0045BAE8 주소부터 분석을 시작하겠습니다. 0045BB12 ~ 0045BB18 이 곳은 입력했던 name값을 가져오네요. 0045BB24는 0045BB22줄에서 가져온 name의 길이와 비교를 해서 길이가 3이 안될 경우에는 프로그램의 오류가 나는 부분입니다. 하지만 문제의 힌트를 보면 한자리 라고 했으니까 저기 0045BB24 부분에서 [C..
level16번 문제는 14,15번과 유형이 유사합니다. CodeEngn이 name일 때 Serial을 구하는 겁니다. BP를 이용해서 풀 수도 있지만 하나하나 상태를 확인하면서 하는게 좋습니다. BP를 이용하면 1분안에 해결할 수 있는 유형의 문제입니다. 실행을 하면 창이 하나 뜨고 name과 pw를 입력받습니다. Exeinfo PE 실행을 했더니, C++로 작성이 되어있습니다. OEP 화면입니다. OEP는 00401220 이네요. 문자열이 들어있는 루틴으로 들어가서 BP를 찍어서 시작하겠습니다. 아래 부분은 재미있게 잘 만들었네요. 화면 크기를 조작하고, 캡션과, 문자열을 출력하는 구문입니다. 0043C3D8 함수는 출력을 담당하는 함수입니다. 0043D758함수는 NAME을 입력받는 함수입니다. 문..
level15번 문제는 14번 문제와 비슷한 유형으로, Serial을 구하는 문제입니다. 실행해본 결과 name에 CodeEngn을 주고 Serial에 문자를 주었더니 integer 오류가 납니다. 숫자로 했더니 그냥 평범한 메시지박스 오류가 나오네요. 숫자를 입력해야 한다는 뜻이고, 저번과 비슷하게 계산기로 16진수를 10진수로 바꿔서 답을 입력해야 한다는 것을 예상할 수가 있습니다. Exeinfo PE로 본 결과 패킹이 안 되어 있고, Delphi로 작성이 되어 있습니다. 실행한 메인 화면입니다. 문자열을 봤더니, 힌트가 되는 곳이 있네요. 저 부분을 타고 들어가서 진행을 하겠습니다. 문자열이 있는 루틴입니다. 저 안에 name과 serial을 받고 비교하는 부분이 있을 겁니다. 이 부분은 프로시저 ..
level14 문제를 보면 Name에 CodeEngn을 입력하면 나오는 Serial 루틴에서 나오는 값을 찾으라는 것입니다. bruteforce가 필요하다고 했는데, 딱히 필요성은 느끼지 못했네요. 실행을 하면 이상한 name과 serial값에 입력을 받는 식으로 사용하고, 틀리다면 시리얼이 틀리게 나오네요. name에 따라서 serial이 생성된다는 것을 예상할 수가 있습니다. Exeinfo PE로 보면 UPX로 걸려있습니다. 문제를 푸는 데 오류가 나면 다시 수동 언팩하기 귀찮아서 UPX 언패킹 툴을 소개합니다. UPX 3.03w 버전인데, 요즘 나온 버전으로 하면 더 잘될 것이라 예상되네요. 하지만 기본적인 프로그램이라 쉽게 됩니다. 기본적인 사용법은 -d 만 알면 됩니다. 압축을 푸는 decomp..
level13 문제를 보면 그냥 정답을 찾는 시크한 문제네요. 실행을 하게 되면 패스워드를 찾는 문제입니다. 오류가나면 Bas Luck!이 출력되는 군요. Exeinfo로 실행을 해보면 C#으로 되어있네요. C#은 워게임 문제에서 종종 출제가 되는데, 일반 올리디버거 같은 디버거로는 디버깅이 불가능 하기 때문에 C# 전용 디컴파일을 이용해야 합니다. .NET Reflector8을 이용하면 C# 파일을 디컴파일이 가능합니다. 디버깅은 못한다는게 아쉽네요.http://hyunmini.tistory.com/20위의 링크에 Reflector 사용법이 자세하게 설명되어 있으니 참고하시기 바랍니다. 실행 로딩 화면입니다. 실행을 하면 맨 아래에 실행 파일인 ConsoleApplication3가 보이는데, 한번 하나..
level12번의 문제를 보면 key값과 메시지 박스의 성공 내용부분을 key값으로 덮어씌우고 그 영역을 답으로 제출하라는 내용입니다. 실행을 해보니 키값을 받습니다.GetDlgItemInt() API 함수에 BP를 걸고 임의 숫자 1234를 입력하겠습니다. GetDlgItemInt()반환 값을 레지스터로 보면 EAX에 4D2(123)이 반환이 되었습니다. 그 밑에 한 개의 루틴이 있습니다. 문제와는 상관은 없지만 분석을 진행을 하겠습니다. 일단 00401063줄에서 ESI에 00403000에 있는 값들을 이동합니다. ESI에는 403000에 있는 문자열들이 많이 있습니다. Hex dump로 보니, 문자는 아닌 것 같고, 그냥 패스워드를 이 중에 찾는 건가? 라는 생각이 들었습니다. 그 밑의 소스에서는 ..
- Total
- Today
- Yesterday
- Bisonal
- Flybits
- MS-Office
- 스피어피싱
- 출처 : Do it 안드로이드 프로그래밍
- Decoding
- 위협정보공유
- koodous
- Kimsuky
- keylogger
- Yara
- CVE-2018-9375
- us-cert
- VirusBulletin
- 비트코인
- infostealer
- 악성코드
- vuln
- AMSI
- 멋쟁이사자처럼 4기
- Cisco Talos
- idapython
- 한글악성코드
- 해킹메일
- malware
- Static Analysis Engine
- cuckoo-sandbox
- .wll
- Servey
- CVE-2018-0798
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |