보안(15)
-
[Pwnable] 1.Pwnable.kr 1번 - fd
내용 : pwnable.kr 1번문제 fd를 풀이한다. 처음 시작하는 포너블! 문제에서 리눅스의 파일 디스크립터가 무엇인가에 대한 질문을 하고, 문제로 통하는 ssh 주소를 나타내주고 있다. 1. 파일 디스크립터 - 시스템으로부터 할당 받은 파일을 대표하는 0이 아닌 정수값. - 프로세스에서 열린 파일의 목록을 관리하는 테이블의 인덱스 유닉스 시스템에서 프로세스가 이 파일들을 접근할 때에 파일 디스크립터(File Descriptor)라는 개념을 이용한다. 파일 디스크립터는 파이프, FIFO, 소켓, 터미널, 디바이스, 일반파일 등 종류에 상관없이 모든 열려있는 파일을 참조할때 쓴다. 파일디스크립터 목적 POSIX 이름 stdio 스트림 0 표준 입력 STDIN_FILENO stdin 1 표준 출력 STD..
2020.04.02 -
[Reversing] 리버싱 핵심원리 [12]. PE 헤더 1
내용 : Windows 운영체제의 PE File Format에 대해 공부한다. Windows 운영체제의 가장 핵심적인 부분인 Process, Memory, DLL 등에 대한 내용을 정리한다. PE File Format 기본 구조 PE 헤더 -> DOS 헤더, DOS Stup, NT 헤더, Section 헤더 DOS 헤더 제작 당시 DOS 파일에 대한 하위 호환성을 고려하여 제작함 / 가장 먼저 나오는 부분. IMAGE_DOS_HEADER 구조체가 존재함 typedef struct _IMAGE_DOS_HEADER { WORD e_magic;//DOS signature {4D5A} WORD e_cblp; WORD e_cp; WORD e_crlc; WORD e_cparhdr; WORD e_minalloc; W..
2020.04.02 -
[Reversing] 리버싱 핵심원리 [11]. abex' Crack Me 4 풀이
내용 : abex' crack me 4를 분석하고 정답 messagebox를 출력한다. 1. 분석 Registered 버튼이 막혀있는 VisualBasic 형식의 파일이 하나 있다. 시리얼을 입력하는 창에 아무리 텍스트를 작성해봐도 활성화되지 않는다. abex' crackme2 처럼 내부에서 시리얼을 생성을 하거나, 이미 내부에 저장된 시리얼과 비교후 Register 버튼이 열릴것으로 추측하였다. 필요한 API로는 strcmp가 있을것이다. (문자열을 비교하기 위해서) 더이상 할수 있는 동적분석이 없으므로 OllyDbg를 이용하여 분석한다. 2. OllyDbg 이용하기 프로그램 내에서 호출되는 모든 API 목록을 보기 위해 해당 항목으로 들어갔다. 예상했던대로 vbsStrCmp를 호출하는 부분이 존재했고..
2020.03.15 -
[Reversing] 리버싱 핵심원리 [10]. abex' Crack Me 3 풀이
내용 : abex' Crack Me3 를 분석하고 패치해본다. 1. 분석 keyfile을 확인 하기 위해서는 OK 버튼을 누르라고 지시한다. 일단 시키는 대로 눌러보면 파일을 찾을 수 없다는 Error 창이 뜨게 된다. 이후 OK를 누르면 종료된다. 2. OllyDbg로 디버깅하기 [F9]를 이용하여 메시지 박스를 호출하는 부분으로 타고 들어왔다. 우선 00401002 번지 주소를 보면 맨 처음 프로그램을 실행시키면 나오는 메시지 박스를 호출하는 부분이 보이고, 그 아래 CreateFileA 라는 API 가 호출되는 것을 볼 수 있다. 처음보는 API이므로 검색을 해보았다. HANDLE CreateFileA( LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwSha..
2020.03.15 -
[Reversing] 리버싱 핵심원리 [9]. Lena's Reversing for Newbies 1
내용 : https://www.tuts4you.com/ 에 있는 crackme 문제 중 1번을 풀이한다. 가. 프로그램 살피기 1. Nag Screen Nag를 없애고, registration코드를 찾아라! 라는 화면이 나오고, 이 창의 이름은 Nag Screen이다. 즉 현재창이 나오는 것을 지우라는 뜻인것 같다. 1-1. 확인 2. 로 이동한다. 1-2. 취소 [프로그램 종료] 로 이동한다. 2. Regcode 입력창 Use SmartCheck to reg!를 보니 SmartCheck라는것을 사용하라는 힌트로 보인다. SmartCheck는 Numega 사이트에서 만든 유틸리티이며 크래커들이 애용하는 툴 중 하나라고 한다. 2-1. Program Exit이 쓰인 선택창이 나오고 이를 누르면 [프로그램 ..
2020.03.12 -
[Reversing] 리버싱 핵심원리 [8]. 함수 호출 규약
내용 : 함수 호출 규약에 대한 정리 함수 호출 규약 함수를 호출 할 때 파라미터를 어떤 식으로 전달하는가? 에 대한 일종의 약속 함수호출 전 파라미터를 스택을 통해서 전달한다. PE헤더에 크기가 명시되어 있어, 프로세스가 실행될 때 스택 메모리의 크기가 결정됨. 스택에 저장된 값은 임시로 사용하는 값임, 더이상 사용하지 않더라도 값을 지우지 않음 (불필요한 CPU 자원을 소모하게 되므로..) 또한 스택 메모리는 이미 고정되어있으므로 메모리 해제가 불가능함. 용어 설명 ※ caller : 함수를 호출한 쪽 ※ callee : 호출을 당한 함수 ex) main() 함수에서 printf() 함수를 호출했다면, Caller : main() | Callee : printf() 이다. 호출 규약 종류 [cdecl..
2020.03.03