목록Run to us with Sh4n3e (77)
Sh4n3e
1. DLL 작성 #include extern "C" __declspec(dllexport)int test(){ printf("testdll print\n"); return 0;} 2. DLL 로딩 #include #pragma comment(lib, "testdll.lib")extern "C" __declspec(dllexport) int test(void);int main(){ LoadLibrary("testdll.dll"); return 0;} #include int main(){ HMODULE temp; PVOID pvoid; temp = LoadeLibrary("testdll.dll"); pvoid = GetProcAddress(temp, "test"); BOOL(__cdecl *exe)(voi..
[SUNIATAS - ALL CLEAR] 각 문제에 해당하는 정답과 문제풀이법은 밝힐 수는 없겠지만, 기초적으로 문제를 어떻게 풀어나가야하는가에 대한 간단한 소개를 올리도록 하겠습니다.
오늘은 PE(Portable Excutable) 파일 구조에 대해 설명하는 2번째 시간입니다. Import Table에 대해서 설명 드리겠습니다. Import Table은 PE파일이 실행될 때 외부로부터 가져와서 사용하는 함수들(DLL)의 목록이 들어있는 Table입니다. DLL은 함수를 Export하고 EXE파일이 그 DLL로부터 함수를 Import합니다. Export된 함수를 가져온다는 것은 결국 해당 DLL과 사용하는 함수에 대한 정보를 어딘가에 저장한다는 것을 의미합니다. 사용하고자 하는 Export 함수들과 그 DLL에 대한 정보를 저장하고 있는 곳이 바로 Import Table인 것입니다. 좀 더 쉬운 이해를 위해 그림을 통해 설명하겠습니다. 우선 IMAGE_DIRECTORY_ENTRY_IMP..
[지능형 지속 위협(Advanced Persistant Threat)] 정의 : 장기간에 걸친 목표와 전략을 가지고 정보전에 참여하는 수진이 매우 높은 적1) 미국 보안업체 MANDIENT 사의 정의=> 미국 정부 및 민간 기업 컴퓨터를 대상으로 체계적으로 공격하는 수준이 높고 목표의식을 가진 상호협력하는 공격자들의 그룹 2) Frankie Li 등의 학자에 의한 정의=> 특정한 목표 컴퓨터나 전체 네트워크를 대상으로 정교하고 체계적으로 공격하는 목표의식을 가진, 상호협력하는 그룹에 의해 실행되는 사이버 공격 3) 미국국립기술연구소(NIST)에 의한 정의=> 고도의 전문 지식과 충분한 리소스를 가진 공격자가 복수의 공격 요소(사이버 공격, 물리적 공격, 사기 등)를 사용해서 목적 달성의 기회를 만들기 위..
오늘은 PE(Portable Executable) 파일 구조에 대해 설명해 보겠습니다. 우선은 구조에 들어가기 앞서 간단한 정의를 집어보고 넘어가겠습니다. PE 파일이란? Portable Executable 파일의 약자로 명령(Operation Codes, OP Codes)에 따라 지시된 작업을 수행하도록 작성된 파일로 실행코드, 전역데이터, Import/Export 함수정보, 리소스 데이터 등을 포함하고 있는 파일이라고 할 수 있습니다. 이 파일은 여러 개의 구조체로 엮여 있으며, 윈도우 커널의 PE로더를 통해 실행가능한 파일로 판단되었을 때, 메모리에 프로그램을 올림으로써 실행할 수 있게 됩니다. 이 구조를 가지고있는 파일의 종류로는 실행파일(EXE), 라이브러리(DLL, LIB), 드라이버(SYS)..
오늘은 간단하게 프로그램의 구조와 프로그램내에 존재하는 Stack영역에 대해서 볼 생각입니다. 이번 시간이 끝나게되면, 프로그램의 구조를 좀더 자세히 쪼개어 PE(Portable Excutable) File에 대해서 한번 알아볼 것입니다. 우리가 사용하는 Windows 32bit Application Program의 경우 PE구조를 지니고 있습니다. 이 PE구조를 크게 보면 아래의 그림과 같을 것 입니다. 이러한 콘텐츠를 좀더 잘게 잘라서 생각해보면, TEXT영역, DATA영역, RESOURCE DATA영역 3가지로 나눠볼 수 있습니다. TEXT영역의 경우 실제 변환된 코드가 들어가 있으며, DATA영역은 String정보, RESOURCE DATA영역의 경우 리소스에 관련된 기타 정보들을 담고 있습니다...
우리가 사용하는 많은 프로그램들은 어떻게 실행이 되는 걸까요? 앞으로 Reverse Engineering(역공학, 리버스 엔지니어링)을 공부하면서, 이런 프로그램들이 어떻게 만들어지는 것이고, 어떻게 작동되는 것인지에 대해서 알아볼 계획입니다. 첫째로, 우리가 Windows 환경에서 사용하는 대부분의 프로그램들은 32bit기준으로 작성된 프로그램들입니다. 보통 말하는 x86과 x64는 인텔이 개발한 마이크로프로세서 계열을 부르는 말이자, 이들과 호환되는 프로세서들에서 사용한 명령어 집합 구조들을 통칭하는 말입니다. 여기서 x86은 32bit의 체제를 말하며, x64는 64bit의 체제를 말합니다. 우리는 역공학을 하기 앞서 이 프로세서들이 갖고있는 레지스터들의 특징을 알아 합니다. 범용레지스터로는 총 8..