반응형

업무 중에 crash가 발생한 프로그램에 대한 메모리 덤프를 뜬 파일을 분석하게 되었습니다.

어느 부분에서 crash가 발생하였는지 확인하는 과정을 나열해 봅니다.

(※ 해당 crash 파일은 MiniDumpWriteDump API의 "MiniDumpNormal"로 설정한 파일 입니다.)

 

본문에서는 반어를 사용합니다. 이점 양해 부탁 드립니다.

-------------------------------------------------------------------------

 

crash가 발생하여 메모리를 dump를 뜬 파일을 전달 받았다.

해당 파일을 windbg로 열어서 어느 부분에서 crash가 발생하였는지 확인 해보도록 하자.

 

우선, dump 파일을 windbg의 crash file open 메뉴를 이용하여 파일을 읽어야 한다.

그렇지 않을 경우 아래와 같은 화면이 나오므로 다시 Open 하기 바란다.

 

 

 

해당 파일은 crash 파일인데 그냥 열겠냐?

라는 메시지다. yes를 누르면 아래와 같이 분석 할 수 없는 내용이 나온다.

 

 

따라서, windbg에서 crash dump 파일을 분석할 수 있는 기능인 "Open Crash Dump" 메뉴를 이용하여

파일을 열어야 분석 할 수 있는 환경이 만들어 진다.

 

 

 

굳이, 분석을 진행하지 않더라도 간단하게 어떤 이유로 crash가 발생 했는지 확인 할 수 있다.

예제 파일은 "Access violation" 으로 크래쉬가 발생한 것이다.

 

 

그럼 조금 더 분석을 하기 위해서 windbg 명령인 "!analyze -v"를 실행 한다.

 

0:000> !analyze -v
*******************************************************************************
*                                                                             *
*                        Exception Analysis                                   *
*                                                                             *
*******************************************************************************


FAULTING_IP:
test+1b1a
00401b1a c6400100        mov     byte ptr [eax+1],0

EXCEPTION_RECORD:  ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 00401b1a (test+0x00001b1a)
   ExceptionCode: c0000005 (Access violation)
  ExceptionFlags: 00000000
NumberParameters: 2
   Parameter[0]: 00000001
   Parameter[1]: 00000001
Attempt to write to address 00000001

CONTEXT:  00000000 -- (.cxr 0x0;r)
eax=00000000 ebx=0a280aa8 ecx=7f680000 edx=0008e3c8 esi=0a280a68 edi=0018f08c
eip=77e70c42 esp=0018ed4c ebp=0018ed5c iopl=0         nv up ei pl zr na pe nc
cs=0023  ss=002b  ds=002b  es=002b  fs=0053  gs=002b             efl=00000246
ntdll!NtGetContextThread+0x12:
77e70c42 83c404          add     esp,4

DEFAULT_BUCKET_ID:  NULL_CLASS_PTR_WRITE

PROCESS_NAME:  test.exe

ERROR_CODE: (NTSTATUS) 0xc0000005 - 0x%08lx

EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - 0x%08lx

EXCEPTION_PARAMETER1:  00000001

EXCEPTION_PARAMETER2:  00000001

WRITE_ADDRESS:  00000001

FOLLOWUP_IP:
test+1b1a
00401b1a c6400100        mov     byte ptr [eax+1],0

APP:  test.exe

ANALYSIS_VERSION: 6.3.9600.16384 (debuggers(dbg).130821-1623) x86fre

FAULTING_THREAD:  00002704

PRIMARY_PROBLEM_CLASS:  NULL_CLASS_PTR_WRITE

BUGCHECK_STR:  APPLICATION_FAULT_NULL_CLASS_PTR_WRITE

LAST_CONTROL_TRANSFER:  from 00401f46 to 00401b1a

STACK_TEXT: 
WARNING: Stack unwind information not available. Following frames may be wrong.
0018fe70 00401f46 00000000 00000000 cccccccc test+0x1b1a
0018fed4 00411808 00400000 00000000 0a0da4ed test+0x1f46
0018ff80 0041156f 0018ff94 7745336a 7efde000 test+0x11808
0018ff88 7745336a 7efde000 0018ffd4 77e89f72 test+0x1156f
0018ff94 77e89f72 7efde000 558d3134 00000000 kernel32!BaseThreadInitThunk+0xe
0018ffd4 77e89f45 00411560 7efde000 00000000 ntdll!__RtlUserThreadStart+0x70
0018ffec 00000000 00411560 7efde000 00000000 ntdll!_RtlUserThreadStart+0x1b


STACK_COMMAND:  ~0s; .ecxr ; kb

SYMBOL_STACK_INDEX:  0

SYMBOL_NAME:  test+1b1a

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: test

IMAGE_NAME:  test.exe

DEBUG_FLR_IMAGE_TIMESTAMP:  53210e00

FAILURE_BUCKET_ID:  NULL_CLASS_PTR_WRITE_c0000005_test.exe!Unknown

BUCKET_ID:  APPLICATION_FAULT_NULL_CLASS_PTR_WRITE_test+1b1a

ANALYSIS_SOURCE:  UM

FAILURE_ID_HASH_STRING:  um:null_class_ptr_write_c0000005_test.exe!unknown

FAILURE_ID_HASH:  {f756d029-0188-112b-7fe5-3c317ed11732}

Followup: MachineOwner
---------

 

 

test+1b1a 00401b1a c6400100        mov     byte ptr [eax+1],0

 

위 코드로 인하여, 실행하는 과정에서 문제가 발생 하였다.

해당 Address를 알 수 있으므로, 디버깅하기는 수월할 것이다.

(소스 코드와 연동하면 더욱 더 편하게 분석 할 수 있다.)

 

조금 더 아래로 내려와서 분석을 하다보면

 

DEFAULT_BUCKET_ID:  NULL_CLASS_PTR_WRITE

 

이런 내용이 보일 것이다. 해당 내용은 Write 하려는 class pointer가 NULL 값을 가지므로 인해서

Write 할 수 없다는 의미이다.

 

이것으로 crash dump 분석을 마무리 하도록 하겠다.

반응형
반응형

해당 글은 ioapic를 확인하는 과정에서 오류가 발생하여, 원인을 파악하던 중 발견된 내용입니다.

확인 해보니 버전과 관련해서 동기화가 되지 않아 발생한 것으로 나옵니다.

보다 상세한 인터럽트 관련된 내용은 추후 또는 검색을 통해서 확인 해보시길 바랍니다.

이후 부터는 반어를 사용합니다. 이점 양해해주십시오. 감사합니다.

-----------------------------------------------------------------------------------------------

 

Windows에서 인터럽트는 하드웨어 인터럽트와 프로그래밍 인터럽트(PIC)가 있다.

하드웨어 인터럽트는 여기에서 다루지 않고 프로그래밍 인터럽트에 대해서 확인 과정을 정리하도록 하겠다.

프로그래밍 인터럽트는 PIC(Programmable Interrupt Contorller)라고 한다.

 

또한, PIC는 x86에서는 i8259A PIC / i82489 APIC(Advanced Programmable Interrupt Controller)로 나뉘어 사용된다.

x64에서는 APIC를 사용하기 때문에 APIC를 제공하지 않는 시스템에서는 인터럽트를 사용할 수 없다.

 

그럼 PIC와 APIC의 내용을 확인 해보자.

PIC, APIC는 HAL*.DLL을 기반으로 동작하기 때문에 PIC가 만약 실행되지 않는다면 APIC HAL(Halapic.dll)을 사용하기 때문이다.

그러나, 아래와 같이 PIC가 동작한다면 APIC는 MPS HAL(Halmps.dll)을 사용하기 때문에 PIC, APIC가 동작하게 되는 것이다.

(※ 더 자세한 내용은 http://support.microsoft.com/kb/309283/ko 확인 해보길 바란다.)

 

 

kd> !pic

----- IRQ Number ----- 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
Physically in service:  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .  .
Physically masked:      Y  Y  Y  Y  Y  Y  Y  Y  Y  Y  Y  Y  Y  Y  Y  Y
Physically requested:   Y  .  .  .  .  .  Y  .  Y  Y  .  .  Y  .  .  Y
Level Triggered:        .  .  .  .  .  Y  .  .  .  Y  Y  Y  .  .  .  .

0: kd> !apic
Apic @ fffe0000  ID:0 (40011)  LogDesc:01000000  DestFmt:ffffffff  TPR 00
TimeCnt: 00000000clk  SpurVec:1f  FaultVec:e3  error:0
Ipi Cmd: 0e000000`000008e1  Vec:E1  FixedDel  Lg:0e000000      edg high      
Timer..: 00000000`000300fd  Vec:FD  FixedDel    Dest=Self      edg high      m
Linti0.: 00000000`0001001f  Vec:1F  FixedDel    Dest=Self      edg high      m
Linti1.: 00000000`000004ff  Vec:FF  NMI         Dest=Self      edg high      
TMR: 56, 76, 86, B1
IRR: 56, B1, D1
ISR: D1

 

추가적으로 I/O APIC를 확인하기 위해서 명령어를 입력할 경우 아래와 같은 에러 메시지가 발생하게 된다면

버전과 관련된 부분일 수 있으므로 .reload 후 다시 조회할 경우 가능하게 된다.

(※ 3번 연속으로 조회를 할 경우 되는 경우도 있다고 하니 참고 하길 바란다.

http://www.osronline.com/showthread.cfm?link=226560)

 

 

1: kd> !ioapic
Error retrieving address of HalpMpInfoTable

 

1: kd> .reload
Connected to Windows 7 7601 x86 compatible target at (Mon Mar 10 08:54:00.789 2014 (UTC + 9:00)), ptr64 FALSE
Loading Kernel Symbols
.............................................................

Press ctrl-c (cdb, kd, ntsd) or ctrl-break (windbg) to abort symbol loads that take too long.
Run !sym noisy before .reload to track down problems loading symbols.

..
................................................................
...........................
Loading User Symbols

Loading unloaded module list
.......
1: kd> .reload hal
1: kd> dt hal!HalpMpInfo

   +0x000 ApicVersion      : Uint4B
   +0x004 ProcessorCount   : Uint4B
   +0x008 DynamicProcessorCount : Uint4B
   +0x00c NtProcessors     : Uint4B
   +0x010 StartedPackages  : Uint4B
   +0x014 BusCount         : Uint4B
   +0x018 IoApicCount      : Uint4B
   +0x01c IoApicIntiCount  : Uint4B
   +0x020 LintiCount       : Uint4B
   +0x024 IMCRPresent      : Uint4B
   +0x028 LocalApicBase    : Uint4B
   +0x02c IoApicBase       : Ptr32 Ptr32 Uint4B
   +0x030 IoApicPhys       : Ptr32 Uint4B
   +0x034 IoApicIntiBase   : Ptr32 Uint4B

1: kd> dt hal!HalpMpInfo @@masm(hal!HalpMpInfoTable)
   +0x000 ApicVersion      : 0x10
   +0x004 ProcessorCount   : 4
   +0x008 DynamicProcessorCount : 0
   +0x00c NtProcessors     : 4
   +0x010 StartedPackages  : 1
   +0x014 BusCount         : 0
   +0x018 IoApicCount      : 1
   +0x01c IoApicIntiCount  : 0xf0
   +0x020 LintiCount       : 0
   +0x024 IMCRPresent      : 0
   +0x028 LocalApicBase    : 0xfee00000
   +0x02c IoApicBase       : 0xffd04044  -> 0xffd05000  -> 0x1c
   +0x030 IoApicPhys       : 0xffd04048  -> 0xfec00000
   +0x034 IoApicIntiBase   : 0xffd0404c  -> 0


1: kd> !ioapic
IoApic @ FEC00000  ID:4 (11)  Arb:4000000
Inti00.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m
Inti01.: 0f000000`00000971  Vec:71  LowestDl  Lg:0f000000      edg high      
Inti02.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m
Inti03.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m
Inti04.: 0f000000`000009b2  Vec:B2  LowestDl  Lg:0f000000      edg high      
Inti05.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m
Inti06.: 00000000`000109a2  Vec:A2  LowestDl  Lg:00000000      edg high      m
Inti07.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m
Inti08.: 01000000`000008d1  Vec:D1  FixedDel  Lg:01000000      edg high      
Inti09.: 0f000000`0000e9b1  Vec:B1  LowestDl  Lg:0f000000      lvl low  rirr 
Inti0A.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m
Inti0B.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m
Inti0C.: 0f000000`00000961  Vec:61  LowestDl  Lg:0f000000      edg high      
Inti0D.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m
Inti0E.: 0f000000`000009b6  Vec:B6  LowestDl  Lg:0f000000      edg high      
Inti0F.: 0f000000`000009a6  Vec:A6  LowestDl  Lg:0f000000      edg high      
Inti10.: 0f000000`0000a976  Vec:76  LowestDl  Lg:0f000000      lvl low       
Inti11.: 0f000000`0000a986  Vec:86  LowestDl  Lg:0f000000      lvl low       
Inti12.: 0f000000`0000e956  Vec:56  LowestDl  Lg:0f000000      lvl low  rirr 
Inti13.: 0f000000`0000a966  Vec:66  LowestDl  Lg:0f000000      lvl low       
Inti14.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m
Inti15.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m
Inti16.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m
Inti17.: 00000000`000100ff  Vec:FF  FixedDel  Ph:00000000      edg high      m

 

 

 

반응형
반응형

---------------------------------------------------------------------------------------

우연찮게 악성코드를 입수하여 분석을 진행 하였습니다.

제가 원하던 업무가 이거구나 하는 즐거움으로 진행 합니다.

 

향후 반어를 사용하므로 이점 미리 양해 부탁 드립니다.

---------------------------------------------------------------------------------------

 

지인과의 이야기를 나누던 중 MS 취약점을 이용한 악성 코드가 유포 되었다는 이야기에 부랴부랴 인터넷 서핑을 했다.

그로 인하여, 아래의 파일을 구할 수 있었다.

 

 703ed7b0401c071564b9eeb743be4115f31b

 HTML

 e05e0113c167ba3878f73c64d55e5a2aff9a

 SWF

 152010b5a90c9a3fa4398f9e4595f95d4df2

 JPG

 

악성 코드 유포 방식은 아래와 같다.

 

HTML -> SWF 실행 -> JPG 파일 다운로드 -> JPG 특정 영역 메모리에 Load -> SWF에서 puIHa3() 호출 -> HTML 내부에 있는 pulHa3() 실행 - > 악성코드 실행 및 드랍(?)

 

전체 흐름은 위와 같으므로 부분으로 나눠서 따라가 보도록 하자.

먼저 HTML 코드를 확인 해보도록 합시다.(취약점은 Use After Free.)

 

 

 

 

이렇 듯 HTML 에서는 SWF 파일을 호출 하게 된다. 호출 된 SWF의 Action Script 정보를 추출하면 아래와 같은 내용이 나오게 된다.

 

 

 

 

 

SWF 파일의 Erido.jpg 파일을 로드 하는 것을 볼 수 있다. 그러나, Erido.jpg 파일을 그냥 로드 하는 것이 아니라

Endian.LITTLE_ENDIAN 형태로 읽어 드린 후 offset "36321" 위치 부터 메모리에 올리는 것을 확인 할 수 있다.

 

 

바이너리 파일은 아래와 같이 10진수로 표시된 것을 16진수로 변환하게 되면 binary 및 쉘코드를 확인 할 수 있다.

 

 

그 뒤, 메모리에 올린 이후 HTML 내부에 있는 puIHa3()를 호출하여, 쉘코드를 실행 하게 된다.

 

 

 

여기까지 분석하였으며, 이후 분석은 아래의 사이트를 참조하길 바란다.

http://redhidden.tistory.com/47

 

반응형
반응형

MBTI 테스트 결과 ESFJ 형으로 나타났습니다.

 

▩ ESFJ 친선도모형 ▩
구체적이고 현실적이고 사실적이며 활동을 조직화하고 주도해 나가는 지도력이 있다.
실질적이고 현실감각이 뛰어나며 일을 조직하고 계획하여 추진시키는 능력이 있다. 기계분야나 행정 분야에 재능을 지녔으며, 체계적으로 사업체나 조직체를 이끌어 나간다. 타고난 지도자로써 일의 목표를 설정하고, 지시하고 결정하고 이행하는 능력이 있다. 결과를 눈으로 볼 수 있는 일, 즉, 사업가, 행정관리, 생산건축 등의 분야에서 능력을 발휘할 수 있다. 속단 속결하는 경향과 지나치게 업무 위주로 사람을 대하는 경향이 있으므로 인간 중심의 가치와 타인의 감정을 충분히 고려해야 한다. 또 미래의 가능성보다 현재의 사실을 추구하기 때문에 현실적, 실용적인 면이 강하다.

▒ 일반적인 특성 ▒
• 신나고 재미있는 사람이다
• 스트레스를 받으면 누구를 만나야 한다
• 강의 때 고개를 제일 많이 끄덕이어 강사를 즐겁게 한다
• 준비성이 철저하며, 참을성이 많고 타인을 잘 돕는다
• 남에게 동조하는 경향이 뛰어나며 사람들과의 상호 활동에서 기력이 생긴다
• 타인의 인정을 받는 것에 아주 민감하다
• 보수적이며, 좋은 음식을 좋아하고, 봉사를 좋아하며 재물을 모으는 것을 즐김
• 자신이 존경하는 사람이나 물건을 이상화하는 경향이 있다
• 제품을 보고 사는 것이 아니라 ESFJ의 인간적인 면에 반해서 산다
• 생각은 창의적인데 실천이 부족하다
• 타인을 돕고 싶은 욕구 때문에 자신의 업무를 소홀히 할 수 있다
• 잔걱정이 많다
• 가족들에게 잔소리가 심하다
• 집단의 일이나 목적을 개인의 것보다 앞세운다
• 조화와 균형을 중요시한다
• 싫은 소리하기 싫어한다
• 사람들 사이에서 중재자 역할을 잘한다
• 자녀와 정서적인 독립이 안되어 걱정이 끊이지가 않는다
• 별명이 수도꼭지 - 눈물이 많다
• 받는 친절하고 재치 있다

▒ 개발해야할 점 ▒
• 가족들과 독립이 필요하다
• 타인의 일에 때로는 냉정하게 생각해 볼 여유가 필요하다
• 잔걱정을 줄이기 위해서 걱정을 객관화 시켜 볼 필요가 있다

 

추가로 페북 공간을 공개합니다.^^

많은 이야기 나눠요.^^

https://www.facebook.com/chang.lee.7967

반응형

'Etc > 思現' 카테고리의 다른 글

다시 시작...  (0) 2023.01.13
나의 MBTI는 2014년도 2021년 같다!  (0) 2021.12.27
된장알...ㅡ.ㅡ+  (3) 2013.04.12
보안 업무를 하면서....  (2) 2012.07.18
사랑비를 기다리며....  (0) 2012.05.03
반응형

 

시스템 유휴 프로세스란?

시스템 상에서의 사용하지 않고 있는 프로세스를 의미하는 문장입니다.

 

그럼 시스템 상에서 사용하지 않고 있는 프로세스의 의미는 무엇인가?

간단하게 말하면 현재 전체 사용량 중에 사용 하지 않고 남아있는 량이라고 보시면 됩니다.

 

즉,

 

 

 

위와 같이 작업관리자에 표기 되었다면 현재 2%만 CPU를 사용하고 있고,

98%는 놀고 있다고 보시면 됩니다. 옆에 사용하는 메모리는 그 유휴 프로세스 량을 축정하기 위해 사용 되어지고 있는

량이 24kb입니다.

 

그러니까,

 

실제 사용하고 있는 프로세스 량 : 100%-98% = 2%

이라는 거죠.

 

그럼 즐거운 한 주 되시길 바랍니다.

 

반응형
반응형

 

분석을 하다보니 이런 경우가 있어 소개합니다.

아시는 분들도 있고, 탐지하고 계신 분들도 있지만 그래도 소수를 위하여^^???

공유합니다.

 

"crattack"라는 문자열을 탐지할 경우

그냥 "crattack"로 사용하면 탐지가 되겠죠. 그래서 방법 중에 하나가 암호화를 이용하는 것입니다.

간단하게 xor를 하던지 하여, xor한 문자열을 다시 로딩하기전에 xor 하여 로딩하는 방식이죠.

 

enc_str = "fproskrlrksjflfkrj";

loadlibrary(xor_dec(enc_str));

 

이런 형태?^^

 

그리고, 두번째는 조합을 이용한 방식 입니다.

 

sprintf(buff, "crat%s", "ttack");

loadlibary(buff);

 

이렇게 해도 우회가 되겠죠?^^

 

물론 사용하는 Loadlibary를 감시해서 처리해도 무방하지만

뭐..하나의 방법이니 참고하시면 좋겠네요.

 

즐거운 삽질 만땅하시길...^^

(참고로 위 사례는 실제 핵킹 툴에서 사용하는 사례입니다.)

반응형
반응형

참고 코드이므로,

참고하세요~^^

 

 

DWORD* address = 0;

DWORD hTest = (DWORD)GetModuleHandle("test.dll");
DWORD addressTable = 0x1019301;


memcpy(&address, (void*)(addressTable+2), 4);   <---- 여기가 중요
 
DWORD dwTest1                 = address[35];
DWORD dwTest2                  = address[71];
DWORD dwTest3                  = address[83];
DWORD dwTest4                  = address[40];
DWORD dwTest5                  = address[50];

 

 

 

참고사항 임....

 

반응형

'프로그래밍 > API/MFC Source' 카테고리의 다른 글

Data Conversions  (0) 2012.07.31
[MFC] ListControl 컬럼 추가  (0) 2012.06.07
[MFC] 폴더 선택 함수  (0) 2012.06.04
반응형

Windows Testing Mode는 서명되지 않은 드라이버를 올린다던지, 테스트 모드가 의미하는 것과 같이

Windows를 제약없이 테스트 하기 위한 모드 입니다.

 

드라이버가 포함된 과자(?)를 구동하고 싶으실 경우 이걸 사용하면 되며,

악성코드를 분석하실 때도 이걸 이용하여 동작하는 부분을 감시하거나 분석하는데도 용이하므로

잘 활용하시길 바라는 마음에 올립니다.

 

[테스트 모드 활성화]

bcdedit.exe -set loadoptions DISABLE_INTEGRITY_CHECKS
bcdedit.exe -set TESTSIGNING ON

 

 

[테스트 모드 비활성화] 

bcdedit.exe -set loadoptions ENABLE_INTEGRITY_CHECKS
bcdedit.exe -set TESTSIGNING OFF

 

 

참고 :

http://support.microsoft.com/kb/982393/ko

http://www.sevenforums.com/tutorials/212819-test-mode-windows-7-build-7601-watermark-remove-desktop.html

http://www.queryadmin.com/147/enable-disable-windows-7-test-mode/

반응형

'Reverse > SystemDoc' 카테고리의 다른 글

[강의자료] 컴퓨터 보안 창과 방패  (0) 2018.01.25
Windows Veriosn Check  (0) 2014.02.03
Key Log List  (0) 2012.08.07
Windows7 64bit Paros 설치  (1) 2012.01.31
Windows 7 Driver Test 방법  (0) 2012.01.18
반응형

현재 윈도우 상태가 Debug 상태인지 아닌지를 체크하기 위한 스크립트입니다.

해당 스크립트는 driver 개발에 필요한 정보이며, 또한 커널 분석을 하는데도 용이하므로 참고하시면 됩니다.

 

굳이 이 걸 사용하지 않아도 되겠지만 그래도 필요한 분이 있으면 사용하길 바라며....

관련 스크립트를 올립니다.

 

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
 ("SELECT * FROM Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
 Wscript.Echo "Caption: " & objOperatingSystem.Caption
 Wscript.Echo "Debug: " & objOperatingSystem.Debug
 Wscript.Echo "Version: " & objOperatingSystem.Version
Next

 

 

 

출처 : Windows Internals [Fifth edition]

반응형

'Reverse > SystemDoc' 카테고리의 다른 글

[강의자료] 컴퓨터 보안 창과 방패  (0) 2018.01.25
[HowTo] Windows Testing Mode  (0) 2014.02.04
Key Log List  (0) 2012.08.07
Windows7 64bit Paros 설치  (1) 2012.01.31
Windows 7 Driver Test 방법  (0) 2012.01.18
반응형

방법은 2가지가 있다.

 

1. 콘솔에서 하는 방식

 

2. 시스템 구성에서 하는 방식

 

우선, VMWare에서 시리얼 포트를 생성한다. 생성하는 과정은 아래와 같다.

그리고 유심히 봐야할 것은 시리얼 포트의 번호 이다. 시리얼 포트의 번호가 따로 없는데 새로 생성하면

2로 만들어지는 것은 VMWare 상에서 우선적으로 사용하고 있기 때문에 향후 콘솔 설정에서 유의하여 연결 해야 한다.

 

 

 

 

 

 

 

 

 

Serial Port 2로 추가 된 것을 볼 수 있다.

VMWare 상태에서 끝났으므로 windbg에서도 대기 접속 대기 상태를 유지한다.

 

 

 

 

(단축키로 만들어 놓으면 좋다.)

windbg.exe -k com:pipe,port=\\.\pipe\babyhack,baud=115200, resets=0, reconnect

 

자 이젠 준비가 완료 되었다.

그럼 진행 해보도록 하자.

 

1. 콘솔 모드로 연결하는 방법

(* cmd.exe를 실행할 때는 반드시 관리자 권한으로 해야 한다.)

 

  부트로더 생성 Debug mode로 실행시키고 싶지 않을때를 위하여 부트로더를 하나 추가하여 사용하는 것이 좋다.

 

       C:\Windows\system32>bcdedit /copy {current} /d DebugEntry

       The entry was successfully copied to {dcffe704-9da4-11e1-a0dd-8c5e574c6735}.

 

       C:\Windows\system32>bcdedit /debug {dcffe704-9da4-11e1-a0dd-8c5e574c6735} ON

       The operation completed successfully.

 

       C:\Windows\system32>bcdedit /default {dcffe704-9da4-11e1-a0dd-8c5e574c6735}

       The operation completed successfully. 

        

C:\Windows\system32>bcdedit

....................................

Windows 부팅 로더
-------------------
identifier                    {current}
device                       partition=C:
path                          \Windows\system32\winload.exe
description                 DebugEntry
locale                        ko-KR
inherit                        {bootloadersettings}
recoverysequence      {dcffe704-9da4-11e1-a0dd-8c5e574c6735}
recoveryenabled         Yes
osdevice                    partition=C:
systemroot                 \Windows
resumeobject             {dcffe702-9da4-11e1-a0dd-8c5e574c6735}
nx                            OptIn
debug                       Yes 

 

     bcdedit /dbgsettings serial debugport:2 baudrate:115200

     (* debugport를 2로 사용한 이유는 COM1은 프린트 용도로 VMWare에서 선점하고 있기 때문에

        COM2를 의미하는 2로 설정한 것이다.)

 

2. 시스템 구성에서 하는 방식

 

   msconfig 명령을 이용하여 부팅 옵션을 설정 변경 할 수 있다.

 

 

 

  시스템 구성 방식에서 설정한 것 처럼 추가하는 방법은 제공하지 않고 있다.

  따라서, 부트로더를 적용하기 위해서는 bcdedit를 이용하던지 부트로더 등록 프로그램을 활용하여 설정하는 것이 안전하고

  편할 것으로 보인다.

 

3. 접속 테스트

  

   심볼 주소 등록 : srv*d:\symbols*http://msdl.microsoft.com/download/symbols

 

 

  ctrl + break 명령을 통하여, Interrupt를 걸고 이 후 g 명령을 통해서 Interrupt 건 상태를 풀어 윈도우가 정상적으로

  동작하게 유지한다. 

 

 

 

참고 사이트

  - http://msdn.microsoft.com/en-us/library/windows/hardware/ff538143(v=vs.85).aspx

  - http://sinarn.blog.me/130183074480

  - http://lucid7.egloos.com/viewer/2760612

  - http://blog.naver.com/bbasyoong/20190453141

  - http://sanaigon.tistory.com/178 (Virtual KD Application 소개)

반응형

+ Recent posts