목록Exploit/윈도우 버그헌팅 및 익스플로잇 (3)
Security_RNRF

3. 디스어셈블러와 디버거 소스 코드는 당연히 볼 수 없고 험난한 수천 수만 줄의 기계어 코드 바다를 직접 휘젓고 다니며 취약점을 찾고 분석해야 한다. 다행히 리버스 엔지니어링 분야도 기술이 발전하면서 디스어셈블러와 디버거 툴이 날로 진화하기 시작했고 우리를 도와줄 강력한 툴 들이 몇 가지 존재한다. 3.1 디스어셈블러 디스어셈블러는 16진수로 이루어진 기계어를 사람이 알아보기 쉽도록 어셈블리어로 해석해준다. 분석에 있어 가장 기본적인 툴이라 할 수 있겠다. 대표적인 디스어셈블러는 두말할 필요 없이 최고의 디스어셈블러로 인정받고 있는 "IDA Pro"이다. "IDA Pro"는 단순히 어셈블리어를 해석하는 것만이 아니라, 어셈블리어 구조를 재귀적으로 분석하여 그래픽으로 깔끔하게 표현한다. 분기문을 기준으로..

2. 어셈블리어 기본 "PUSH EBP, ADD EAX, MOV ECX, EDX..." 어셈블리어는 여전히 컴퓨터에게 친근한 언어이지 사람이 이해하기 편한 언어는 아니다. 사실 수 년째 이 분야를 공부해도 어셈블리어는 그닥 좋아할 수 없다. 간혹 몇 MB 이상의 바이너리를 분석하다 보면 짜증이난다. 하지만 바이너리를 분석하고 취약점을 찾기 위해서는 반드시 어셈블리어를 이해하고 읽을 줄 알아야만 한다. 오픈소스 프로그램이 아닌 이상 소스 코드를 볼 수는 없기 때문이다. 이 점이 바로 시스템 해킹에 발을 들여놓는데 큰 장벽이 되기도 한다. 처음부터 모든 어셈블리어를 무작정 외우려고 하거나 어셈블리어로 프로그래밍을 하지는 않아도 된다. 매뉴얼을 보면 알겠지만 어셈블리어에는 생각 이상으로 많은 명령어가 있는 편..

1. PC 내부 구조 해킹에 당장 활용할 수 있는 Expoilt 코드부터 작성하고 싶지만 기초 지식이 없는 해킹 공부는 모래성과 같이 약할 수 밖에 없다. 그렇기 때문에 컴퓨터 아키텍처(구조)에 대한 기초 지식과 디버거 및 디스어셈블러 등과 같은 툴의 사용법을 익혀볼 것이다. 1.1 컴퓨터의 언어 사람은 컴퓨터와 대화하기 위해 프로그래밍 언어를 사용하나 컴퓨터는 실제로 소스 코드를 이해하지 못하기 때문에 내부적으로 컴파일을 거쳐 CPU가 이해할 수 있는 기계어로 대화한다. 컴퓨터가 사용하는 기계어, 즉 어셈블리어와 컴퓨터의 내부 동작 구조를 이해해야 한다. 1.2 CPU와 레지스터 CPU는 컴퓨터에서 인간의 두뇌에 해당하는 부품이다. 우리의 목표는 윈도우 운영체제에서 동작하는 프로그램에 대한 공격이므로,..