목록분류 전체보기 (285)
tmxklab
1. 문제 1) 문제확인실행시키면 왼쪽 그림이 나오고 확인 누르면 왼쪽 그림처럼 파일을 찾을 수 없다고 뜸 upx 언패킹 ㄱㄱ 근데 언패킹하고 다시 실행시켜보면 알 수 없는 문자가 나온다. 2. 접근방법 언패킹된 pe파일을 올리고 실행시키면 EP부터 nop sled마냥 nop이 연속적으로 나오고 MessageBoxA()를 호출하는데 MessageBoxA()의 인자 값에 아무 것도 안들어가서 알 수 없는 문자가 뜬 것 같다. 이후에 실행되는 로직을 살펴보면 딱히 별 거 없다. 문제의 요점은 Stolen Byte를 찾는 것이다. 언패킹되면서 MessageBoxA()의 인자로 들어가는 특정 코드가 다른 곳으로 옮겨진 듯하다. 따라서, 패킹된 pe파일을 확인하여 찾아보자 3. 문제풀이일단 언패킹된 pe파일에는 ..
1. 문제 1) 문제확인실행해보면 계산기가 뜬다.(로컬에 있는거 말고..) upx로 패킹되어 있으니 언패킹을 진행하자 2. 접근방법 3. 문제풀이 OEP를 구하는 거니깐 바로 디버깅을 해보자 EntryPoint : 0x01012475 4. 몰랐던 개념 Uploaded by Notion2Tistory v1.1.0
1. 문제 1) 문제확인 실행 시 왼쪽 창, 틀린 값 입력 시 오른쪽 창 2. 접근방법 패킹되어 있지는 않아서 아이다에 올려서 확인해보고 디버깅을 통해서 시리얼 값을 확인해보자 3. 문제풀이 GetVolumeInformationA()를 통해 VolumeNameBuffer에 지정된 드라이브의 이름을 가져온다. 그리고 VolumeNameBuffer의 값이 어떠한 작업을 거쳐 조금씩 수정되고 사용자의 입력 값이 저장된 String값과 비교하여 분기한다. GetVolumeInformationA()호출 이후에 VolumeNameBuffer(0x40225c)에 현재 C드라이브의 이름인 "로컬 디스크"가 저장되어 있다. 문제에서는 C드라이브의 이름이 "CodeEngn"일 경우 어떻게 변하는지 알아보라고 했으니 값을 ..
1. 문제 1) 문제확인실행하면 왼쪽 창이 뜨고 아무거나 입력하고 "Check Serial"버튼을 누르면 오른쪽 창에 잘못된 시리얼 값이라고 메시지 박스가 뜬다. UPX로 패킹되어 있으므로 언패킹을 진행하자 2. 접근방법 OEP(Origianl Entry Point)와 Serial값을 찾아야 되는데 입력한 값과 Serial값과 비교하는 로직을 찾아서 확인해보면 될 듯 3. 문제풀이 일단 OEP는 0x401360이며 "Wron serial!!"문자열을 따라가보면 위에 보이는 함수에서 사용된다. strcmp로 문자열을 비교하는데 String은 사용자의 입력 값이고 aAd46dfs547은 Serial값이다.Serial number : AD46DFS547 4. 몰랐던 개념OEP(Original Entry Poi..
1. 문제 1) 문제확인실행시키면 왼쪽 창이 뜨고 "Register now !"를 누르면 오른쪽 메시지 박스가 뜬다. 2. 접근방법 아이다에 올려보면 다음과 같이 메시지 박스가 뜨고start함수만 존재한다. 뭔가 문제가 있는 것 같다. 패킹 정보를 확인해보니 UPX로 패킹된 것을 알 수 있다. 이제 언패킹을 하자 upx를 다운로드하여 언패킹 시도 ㄱㄱ 3. 문제풀이 "Wrong Serial, try again!"문자열을 참조하는 곳을 살펴보면 Strcmp()가 2번 사용되었고 참이면 "Conrats! ~~~"메시지 박스를 띄워주는 것 같다. v7은 사용자 입력 값인 것 같고 비교하는 값은 str_Registered_User[1]과 str_GFX_754_IER_954[1]이다. 따라서 확인해보면 사용자 아..
1. 문제 1) 문제확인실행해보면 cmd창이 뜨고 계속 "정상"이라는 문자열이 출력된다. 2. 접근방법 3. 문제풀이 디버거 프로그램을 탐지하는 함수는 "IsDebuggerPresent" 디버깅하고 있으면 저렇게 "디버깅 당함"이라고 문자열 출력함 4. 몰랐던 개념 Anti-Debugging 기법 중 가장 기초적인 방법으로 "IsDebuggerPresent"함수를 사용한다. +) 커널모드의 디버거는 탐지하지 못하고 유저모드의 디버거먼 탐지가 가능하다고 한다.+) 해당 프로세스가 디버깅을 당하고 있는지 여부를 PEB구조체의 디버깅 상태 값을 확인한다고 한다. 참고 자료)자동등록방지를 위해 보안절차를 거치고 있습니다.http://hisjournal.net/blog/362 Uploaded by Notion2T..
1. 문제 1) 문제확인음.. 또 실행이 안된다. 근데 비쥬얼 베이직에서 문자열 비교함수를 찾아보니..요건데 입력하면 틀리다고 나온다..ㅋㅋㅋㅋㅋㅋ 2. 접근방법 다음 링크를 참고해서 문제해결ㄱㄱMsvbvm50.dll 다운로드 및 오류 해결법Msvbvm50.dll 에러가 발생하면 문제가 생긴 파일이 있는 위치에 파일을 복사하여 넣거나 파일을 새로 생성해야 합니다. 여기에서는 파일을 다운로드 받아서 시스템 폴더에 넣거나 다이렉트X 최신버전을 설치하여 파일을 새로 생성하는 방법을 알려드리겠습니다. 1. 바탕화면의 내 컴퓨터 아이콘을 마우스 오른쪽 버튼을 클릭합니다. 다음 그림과 같이 목록이 표시되면 속성을 선택하여 시스템 창을 오픈합니다. 2.https://boksbooks.tistory.com/67 그럼 ..
1. 문제 1) 문제확인실행이 안된다. 2. 접근방법 010 editor로 열어봤을 때 PE Header에 뭔가 문제가 있다.DOS Header의 e_lfanew멤버 즉, 첫 바이트로부터 offset이 0x3c떨어진 곳에 NT Header가 시작되는 위치의 옵셋이 존재한다. 근데 위 사진을 보면 알 수 있듯이 0x1000값이 들어있다. → 잘못됨여튼, 이것말고도 각 헤더의 멤버에 세팅 값이 이상한 것을 확인할 수 있어 요런 것들을 고쳐서 PE가 정상 작동하도록 해야할 것 같다. 결론적으로 잘 보면 Dos Header는 정상적으로 되어있고(위에서 말한 NT Header가 시작 옵셋을 알려주는 e_lfanew빼고) Dos Stub은 아예 없고 Nt Header도 아예 없는 것 같아보이지만 Section He..
1. 문제 1) 문제확인실행 결과 CD-ROM Drive가 아니라고 한다. 2. 접근방법 GetDriveTypeA()를 호출하고 eax값과 esi를 비교하여 같아야 할 듯하다.esi값은 어떤 값인지는 모르겠는데 eax값은 GetDriveTypeA()의 리턴 값으로 생각된다. 최종적으로 "cmp eax, esi"을 실행하기 전까지 eax는 2번 감소하게 된다. GetDriveTypeA()는 디스크 드라이브 타입을 알아내는 함수이며 리턴 값에는 드라이브 타입을 알 수 있다.DRIVE_CDROM일 때 리턴 값이 5인 것을 알 수 있다. 3. 문제풀이 GetDirveTypeA()의 인자에 C드라이브 path가 들어가며 실행 후 리턴 값으로 3이 eax에 저장되어진다. eax가 2번 감소되어 1이 저장되어 있고 ..
0. 목차 Contents 0. 목차 1. 소개 1.1 CVE-2017-8291 1.2 한글 파일 구조 1.3 EPS파일 로드 과정 1) Process 2) 추가 설명 3) 요약 2. 분석환경 3. 분석 3.1 문서 확인 3.2 PS파일 추출 3.3 포스트 스크립트 분석 3.4 PE파일 분석 3.5 행위 분석 1) 필터 적용 1 2) 필터 적용 2 4. 참고자료 4.1 한글 문서 유형 악성코드 관련 4.2 ghostscript 4.3 OLE Object 1. 소개 HWP 한글 문서형 악성코드는 문서파일 열람시 악성코드에 감염되는 유형으로 주로 한글 프로그램을 사용하는 공공기관이나 가상화폐 관련 기업 등의 대상을 공격하는 타깃형 공격이 2010년 이후부터 꾸준히 발생하였다. 과거에는 한글 프로그램 자체의 ..