BLOG main image
분류 전체보기 (145)
궁시렁 (41)
컴쟁이의 연구실 (66)
리버싱 (21)
배워보자 (3)
좋은 곳 (10)
seyool님의 언팩미#1 들여다보기.
jz in reverse engineering
MS API 드래프트 제 1버전 공개
낚시광준초리의 Blog 세상(IT-Fo..
[Kernel] KeServiceDescriptorTa..
我好电脑,我是一名的程序设计员..
SSDT에 대한 고찰
::거듭나기::
불필요한 관심
^0^range.Net - 신은 불공평하다..
141,652 Visitors up to today!
Today 12 hit, Yesterday 22 hit
daisy rss
^0^range.net
'2008/10'에 해당되는 글 4건
2008/10/30 17:20
이것도 웃기지?

크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback Address :: http://0range.net/trackback/268 관련글 쓰기
| 2008/10/30 23:45 | PERMALINK | EDIT/DEL | REPLY
비밀댓글 입니다
BlogIcon seyool | 2008/10/30 23:22 | PERMALINK | EDIT/DEL
감사합니다.. 정말 감사합니다 (_._)
BlogIcon seyool | 2008/10/31 09:19 | PERMALINK | EDIT/DEL
감동이네요~~
감사합니다 ㅎㅎ
BlogIcon beatto | 2008/10/31 11:46 | PERMALINK | EDIT/DEL | REPLY
ㅎㅎ ...이거 오랜된건데요...
BlogIcon seyool | 2008/10/31 18:21 | PERMALINK | EDIT/DEL
저만 모르고 있었네요
BlogIcon vbdream | 2008/10/31 18:36 | PERMALINK | EDIT/DEL | REPLY
이거 한참 지난... 제가 초등학교 다닐 적에 유행했던 만화네요 ㅋㅋㅋ...
BlogIcon seyool | 2008/11/14 18:53 | PERMALINK | EDIT/DEL
ㅎㅎ 전 본지 얼마 안됬어요~~
BlogIcon 세지군 | 2008/11/09 14:41 | PERMALINK | EDIT/DEL | REPLY
니가 요즘...개그 소재가 매말랐구나...-_-);;
BlogIcon seyool | 2008/11/14 18:53 | PERMALINK | EDIT/DEL
아랫분들은 재미있다고 하시잖아 ㅎㅎ
Hong10 | 2008/11/12 16:11 | PERMALINK | EDIT/DEL | REPLY
빵 터지고 갑니다. 센스쟁이 ㅋㅋㅋ 난 이런게 넘 웃긴데 ㅠㅠ
BlogIcon seyool | 2008/11/14 18:53 | PERMALINK | EDIT/DEL
잘 지내시지요? 자주 뵜으면 좋겠어요 ^^
BlogIcon naggingmachine | 2008/11/14 08:40 | PERMALINK | EDIT/DEL | REPLY
와하하.. 재밌게 웃고 가네요. 욀케 재밌죠?
BlogIcon seyool | 2008/11/14 18:52 | PERMALINK | EDIT/DEL
마지막 장면이 최수종님을 너무 닮은게 압권이지요..
김종호 | 2008/11/18 14:47 | PERMALINK | EDIT/DEL | REPLY
아핫..세율씨..이거 진짜 오래된건데...ㅎㅎ

잘 지내죠? 요즘 아이온 대박쳤던데...부럽삼~

근데 여긴 방명록 없어요? 내가 못 찾는건가...없으면 좀 만들어봐요..

발도장 찍고가기 힘듦...ㅎㅎ 감기 조심해요~
BlogIcon seyool | 2008/11/19 09:22 | PERMALINK | EDIT/DEL
앗.. 종호형~~~
잘 지내시죠? 오늘부터 추워졌네요..
사실 어제까지 반팔입고 다녔어요 ㅎㅎ
방명록은 상단에 GUEST BOOK 이라고 주황색 글씨가 있어요 ㅋㅋ
언제 함 뵈어야 할텐데.. 불러주세용 ㅎㅎ
n0fate | 2008/11/20 12:27 | PERMALINK | EDIT/DEL | REPLY
앜ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

완전 재밌네요.ㅋㅋ
Name
Password
Homepage
Secret
2008/10/23 22:22
lucid7님의 블로그를 통하여 csrss 프로세스의 unexport 구조체를 통하여  숨겨진 프로세스를 탐지하는 법을
알게 되었다.
물론 루트킷사이트에서 제일먼저 보긴했지만, lucid7님이 번역하셔서 쉽게 이해할 수 있었다.

"csrss는 유저영역의 통제자로써 활동하기때문에 모든 Win32 프로세스들이 생성시 csrss에 알려야만 한다.
csrss.exe는 csrsrv.dll의 노출되지않은 심벌(Unexported symbol)인 CsrRootProcess을 통해서 생성된
프로세스정보들을 관리한다."

이 점에 착안하여 루트킷 디텍터를 만들 수 있다는 것이 요지이다.
이기법은 Win2k부터 win2008까지 모두 사용가능하다고 한다. 또한 유저모드에서 동작하므로 드라이버가 필요없다.
다음 내용은 위 내용을 개인적으로 답습한것에 불과하다.

** csrss.exe 디버깅 **

kd> !process 0 0
**** NT ACTIVE PROCESS DUMP ****
PROCESS 823b9830  SessionId: none  Cid: 0004    Peb: 00000000  ParentCid: 0000
    DirBase: 00039000  ObjectTable: e1000cc0  HandleCount: 269.
    Image: System

PROCESS 820e5020  SessionId: 0  Cid: 025c    Peb: 7ffdc000  ParentCid: 022c
    DirBase: 0c9af000  ObjectTable: e15ea458  HandleCount: 353.
    Image: csrss.exe
... 생략 ...

kd> .process /i 820e5020 ; g; .reload /user
You need to continue execution (press 'g' <enter>) for the context
to be switched. When the debugger breaks in again, you will be in
the new process context.
Break instruction exception - code 80000003 (first chance)
Loading User Symbols
..............


** csrsrv에 CsrRootProcess가 존재하는지 확인 **

kd> x csrsrv!CsrRootProcess
75a8891c CSRSRV!CsrRootProcess = <no type information>

CsrRootProcess는 _CSR_PROCESS 구조체들을 가리키며, 아래와 같이 생겼다.
// Vista/2008 csrsrv.dll (valid also for XP, 2003)

typedef struct _CSR_PROCESS {
    struct _CLIENT_ID ClientId;
    struct _LIST_ENTRY ListLink;
    struct _LIST_ENTRY ThreadList;
    struct _CSR_NT_SESSION* NtSession;
    ULONG ExpectedVersion;
    void* ClientPort;
    char* ClientViewBase;
    char* ClientViewBounds;
    void* ProcessHandle;
    ULONG SequenceNumber;
    ULONG Flags;
    ULONG DebugFlags;
    ULONG ReferenceCount;
    ULONG ProcessGroupId;
    ULONG ProcessGroupSequence;
    ULONG fVDM;
    ULONG ThreadCount;
    ULONG LastMessageSequence;
    ULONG NumOutstandingMessages;
    ULONG ShutdownLevel;
    ULONG ShutdownFlags;
    struct _LUID Luid;
    void* ServerDllPerProcessData[1];
} CSR_PROCESS, *PCSR_PROCESS;



** CsrRootProcess가 가리키는 ListEntry를 따라서 프로세스 정보 출력 **

아래의 내용을 파일로 생성하여 windbg에서 실행시킨다

$$ CsrRootProcess에서 ProcessList의 주소를 구함
r $t0 = poi(csrsrv!CsrRootProcess)+8

.echo
.echo "----------------------------------------"
.echo "     CsrWalker script for windbg        "
.echo "                                        "
.echo "           http://0range.net            "
.echo "----------------------------------------"
.echo 

$$ Linked List을 순회하면서 PID출력
.for (r $t1 = poi(@$t0);
      (@$t1 != 0) & (@$t1 != @$t0);
      r $t1 = poi(@$t1))
{

    r? $t2 = @$t1 - 8
    dt _CLIENT_ID @$t2
}

kd> $$><"C:\windbg scripts\WalkCsrss.txt"

----------------------------------------
     CsrWalker script for windbg

           http://0range.net
----------------------------------------

ntdll!_CLIENT_ID
   +0x000 UniqueProcess    : 0x00000274 
   +0x004 UniqueThread     : 0x00000278 
ntdll!_CLIENT_ID
   +0x000 UniqueProcess    : 0x000002a0 
   +0x004 UniqueThread     : 0x000002a4 
ntdll!_CLIENT_ID
   +0x000 UniqueProcess    : 0x000002ac 
   +0x004 UniqueThread     : 0x000002b0 
ntdll!_CLIENT_ID
   +0x000 UniqueProcess    : 0x00000348 
   +0x004 UniqueThread     : 0x0000034c 
... 생략 ...

위 방법으로 프로세스정보를 출력한 것과 '!process 0 0' 으로 출력한 결과와 비교해 보니, CsrRootProcess
을 Enumeration한 결과는 다음과 같은 프로세스의 정보는 존재 하지 않았다.

PROCESS 823b9830  SessionId: none  Cid: 0004    Peb: 00000000  ParentCid: 0000
    DirBase: 00039000  ObjectTable: e1000cc0  HandleCount: 269.
    Image: System

PROCESS 8223cd38  SessionId: none  Cid: 022c    Peb: 7ffdf000  ParentCid: 0004
    DirBase: 0a03d000  ObjectTable: e14593f8  HandleCount:  19.
    Image: smss.exe

PROCESS 820e5020  SessionId: 0  Cid: 025c    Peb: 7ffdc000  ParentCid: 022c
    DirBase: 0c9af000  ObjectTable: e15ea458  HandleCount: 353.
    Image: csrss.exe


CsrRootProcess는 unexport된 심벌이므로 찾으려면, CsrLockProcessByClientId() 을 통해서 알아낼 수 있다.

kd> uf csrsrv!CsrLockProcessByClientId
CSRSRV!CsrLockProcessByClientId:
75a852d3 8bff            mov     edi,edi
75a852d5 55              push    ebp
75a852d6 8bec            mov     ebp,esp
75a852d8 53              push    ebx
75a852d9 56              push    esi
75a852da 57              push    edi
75a852db bfa089a875      mov     edi,offset CSRSRV!CsrProcessStructureLock (75a889a0)
75a852e0 57              push    edi
75a852e1 ff151811a875    call    dword ptr [CSRSRV!_imp__RtlEnterCriticalSection (75a81118)]
75a852e7 8b550c          mov     edx,dword ptr [ebp+0Ch]
75a852ea 832200          and     dword ptr [edx],0
75a852ed 8b351c89a875    mov     esi,dword ptr [CSRSRV!CsrRootProcess (75a8891c)]
75a852f3 83c608          add     esi,8
75a852f6 c7450c010000c0  mov     dword ptr [ebp+0Ch],0C0000001h
75a852fd 8bce            mov     ecx,esi

저 함수를 조사하면 CsrRootProcess의 주소를 구할 수 있으며, 또한 CsrRootProcess에 접근하기 위한
동기화락인 CsrProcessStructureLock 의 주소도 얻을 수 있겠다.



참고:

크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback Address :: http://0range.net/trackback/267 관련글 쓰기
BlogIcon kkamagui | 2008/10/24 21:18 | PERMALINK | EDIT/DEL | REPLY
헛... 멋지군요. ^^
csrss내에 저런 정보가 있다니~ ㅎㅎ 역시 대단한 사람들이 많은 것 같습니다.
좋은 글 잘 보고 갑니다. ^^
BlogIcon seyool | 2008/10/25 18:57 | PERMALINK | EDIT/DEL
별 말씀을요.. lucid7님 한글로 번역해주신것을 그저 따라해본것에
불과합니다
kkamagui님은 제 블로그의 열혈독자시군요
감사합니다 ㅋㅋ
BlogIcon kkamagui | 2008/10/26 10:47 | PERMALINK | EDIT/DEL
암요~ 열혈 독자이지요 ㅎㅎ
항상 모니터링(?)하고 있습니다. ^^
BlogIcon seyool | 2008/10/30 09:38 | PERMALINK | EDIT/DEL
저도 매일은 아니지만, 항상 메모하려는 습관을 가지려고 노력해야 겠어요..
자주 방문해주셔서 감사합니다 ^^
chpie | 2008/10/26 00:09 | PERMALINK | EDIT/DEL | REPLY
열혈독자란 표현이 재미있어요 ㅋㅋㅋ
BlogIcon seyool | 2008/10/30 09:51 | PERMALINK | EDIT/DEL
전 push, pop; 이 더 재미있는걸요.. ㅋㅋ
BlogIcon 이아우 | 2008/10/26 21:49 | PERMALINK | EDIT/DEL | REPLY
아.. csrss를 이용하는 법도 있군요. 요즘 루트킷 사이트를 자주 모니터링하지 못했는데 여기서 좋은 정보 얻구 갑니다 ~~
BlogIcon seyool | 2008/10/30 10:02 | PERMALINK | EDIT/DEL
좋은 정보 알게되시면 귀뜸해주세용 ^____^
BlogIcon vbdream | 2008/10/30 00:37 | PERMALINK | EDIT/DEL | REPLY
저도 이 방법을 꽤 예전에 외국 사이트에서 발견하긴 했었는데, CSR_PROCESS 구조체 정보가 어디에 저장되어있는지는 못찾겠더군요. 좋은 정보 감사합니다. ^^

시간 나시면,

http://vbdream.tistory.com/entry/Kernel-탐구-제가-알고있는-숨겨진-프로세스를-찾는-방법들

도 한번 들려주셨으면...
BlogIcon seyool | 2008/10/30 10:08 | PERMALINK | EDIT/DEL
넵!! 잘 읽어보았습니다 ㅎㅎ
잘 정리해주셨네요. 감사합니다 :)
BlogIcon window31 | 2008/10/30 02:03 | PERMALINK | EDIT/DEL | REPLY
ㅎㅎ 예전에 모 솔루션이 이 방법으로 숨김 프로세스를 찾은 적이 있었죠.
근데 해커들이 우회한 방법이 더 웃겨요.. csrss.exe 를 숨겨버리더군요 -_- 그러니 찾을 수가 없다는 lol
머 그래서 다른 방법으로 바꿨습니다 ;; 그래서 실전에 오래 써먹지는 못했다는...; 암튼 저런 구조체가 있다는 사실은 그래도 연구대상은 되죠 ㅎㅎ
BlogIcon seyool | 2008/10/30 10:10 | PERMALINK | EDIT/DEL
허걱.. 연결리스트를 unlink하는것보다 아예 숨겨버리면 우회가 더 쉽겠군요. 기발하군요 ㅎㅎ
감사합니다. 좋은정보 알았네요.
BlogIcon vbdream | 2008/10/30 18:01 | PERMALINK | EDIT/DEL
헛... 그 상황에선 NTDLL.DLL의 CsrGetProcessId 함수를 써도 찾을 수 없던가요?
BlogIcon naggingmachine | 2008/10/30 09:33 | PERMALINK | EDIT/DEL | REPLY
오. 좋은 정보 감사합니다. ^^
BlogIcon seyool | 2008/10/30 11:18 | PERMALINK | EDIT/DEL
디버그랩에서 더 많이 배우는걸요~~
BlogIcon chp | 2008/11/14 13:20 | PERMALINK | EDIT/DEL | REPLY
재미있는 방법들이 많내요 :D
BlogIcon seyool | 2008/11/14 18:49 | PERMALINK | EDIT/DEL
반갑습니다. chp님 ㅎㅎ :)
BlogIcon binish | 2008/11/15 04:26 | PERMALINK | EDIT/DEL | REPLY
오! 세율이 =) 굿굿
BlogIcon seyool | 2008/11/17 09:20 | PERMALINK | EDIT/DEL
엇.. binish 다 ㅋㅋ
Name
Password
Homepage
Secret
2008/10/14 17:47
갑자기 asm파일을 같이 포함해야만 하는 상황이 발생했다.
SOURCES파일을 열고 'sources=' 란에 해당파일(.asm)을 추가했지만, 빌드하는 방법을 모른다고 에러가 발생하였다.
구글을 뒤져보니 역시 답이 있었다.

만약 catchy32.asm 이 어셈블리로 된 모듈이라면, 해당 아키텍쳐에 맞게끔 지정해줄 수 있었다.
즉, SOURCES와 별도로 어셈블리소스는 'I386_SOURCES=' 항목란에 어셈블리소스경로를 지정해주면 되는 것이다.
마찬가지로 IA64는 'IA64_SOURCES=' 을 이용하며 되겠다.
왜그런지 몰라도, 저 catchy32.asm 은 i386폴더안에 있어야만 되더라..

TARGETNAME=xxxxxxx
TARGETPATH=obj
TARGETTYPE=DRIVER
TARGETLIBS=$(DDK_LIB_PATH)\ntstrsafe.lib
SOURCES=pullout.c \
xxxxx2.c
search.c \
hidecmd.c
I386_SOURCES=i386\catchy32.asm

참고:
http://stackoverflow.com/questions/128120/assembler-file-as-input-for-a-driver-build-with-the-wdk-tools
http://msdn.microsoft.com/en-us/library/ms792417.aspx

크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback Address :: http://0range.net/trackback/266 관련글 쓰기
BlogIcon Sizone | 2008/10/14 18:09 | PERMALINK | EDIT/DEL | REPLY
구글은 역시 짱이야!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

형님 디버깅 스터디 언제부터 시작해욤 -_-?
BlogIcon seyool | 2008/10/16 09:01 | PERMALINK | EDIT/DEL
글쎄,, 민스랑 한번 상의해 보자
대전에서 해야될거 같고, 더하고 싶은사람있으면 같이 하자
스터디실은 충대나 한남대서 하면 좋을거 같은데,,,
괜찮은데 있으면 추천좀 해주고 ㅎㅎ
chpie | 2008/10/15 02:17 | PERMALINK | EDIT/DEL | REPLY
감사합니다 ㅋㅋ
BlogIcon seyool | 2008/10/16 09:02 | PERMALINK | EDIT/DEL
별말씀을요..
요즘에 재미난 일을 또 연구하시나봐요..? ㅎㅎ
BlogIcon somma | 2008/10/15 16:55 | PERMALINK | EDIT/DEL | REPLY
catchy32.asm 라면.. 음.. 어디서 많이 본넘인데..
phide ?
BlogIcon seyool | 2008/10/16 09:04 | PERMALINK | EDIT/DEL
네.. Length디스어셈블러 모듈이지요
BlogIcon kkamagui | 2008/10/15 23:23 | PERMALINK | EDIT/DEL | REPLY
와우~ 좋은 내용 잘 보고 갑니다. ^^
저렇게 빌드하는 방법이 있었군요. ;)
BlogIcon seyool | 2008/10/16 09:18 | PERMALINK | EDIT/DEL
제가 잊지 않기 위해 적은글이에요.
쉽게 찾을 수 있는 내용입니다 ㅎㅎ
n0fate | 2008/11/20 12:29 | PERMALINK | EDIT/DEL | REPLY
오 저런 현상이 있었네요.. 덕분에 저 삽질은 면할 수 있게 되었네요..

감사합니다. :)
BlogIcon seyool | 2008/11/30 00:47 | PERMALINK | EDIT/DEL
오랜만이시네요. 방갑습니다
잘 지내시지요? 오늘도 학교다녀왔는데,, 공사중인거 같더라구요..
잔디밭이 좋았는데...
BlogIcon 미친감자 | 2008/12/26 17:18 | PERMALINK | EDIT/DEL | REPLY
음..좋은 정보.감사합니다...
BlogIcon seyool | 2009/01/03 21:19 | PERMALINK | EDIT/DEL
새해 복 많이 받으세요~
Name
Password
Homepage
Secret
2008/10/09 17:49



프로그램밍으로 수학 문제 푸는 사이트라고 한다. 
수학하고 안친한데;;;
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback Address :: http://0range.net/trackback/265 관련글 쓰기
kwon | 2008/10/10 12:09 | PERMALINK | EDIT/DEL | REPLY
이거 괜찮은데요!
안그래도 요즘 중학수학부터 다시 공부해 볼까 하고 있었는데.
더군다나 오래 잊고있던 프로그래밍도 할 수 있으니!! 하핫.

고마워요.
BlogIcon seyool | 2008/10/11 00:18 | PERMALINK | EDIT/DEL
수학은 중학교때부터 포기했지요.
그후로 군대서 잠깐 본적있는데,, 천성이 머리가 나빠서 그런가
친해지지 않네요.
혹시 dolce님이신가요 ^^?
kwon | 2008/10/11 17:00 | PERMALINK | EDIT/DEL
네 ^^

사는 얘기가 뜸하네요.
저는 어제 밤 낚시 다녀왔어요.
그래서 지금 잘까 말까 고민중. 히히
BlogIcon seyool | 2008/10/14 09:13 | PERMALINK | EDIT/DEL
역시 dolce님 맞으시는군요.
많이 잡으셨나요? ㅎㅎ
밤낚시라.. 피곤하지 않으세요?
요새 날씨가 좋아서, 낚시하기 좋지요
BlogIcon 작은꿈 | 2008/10/13 01:07 | PERMALINK | EDIT/DEL | REPLY
다녀갑니다. 블로그엔 여전히 컴퓨터 얘기네요. 부럽습니다..^^
BlogIcon seyool | 2008/10/14 09:13 | PERMALINK | EDIT/DEL
음.. 내 블로그는 쩔어 -_-;
BlogIcon 세지군 | 2008/10/13 15:14 | PERMALINK | EDIT/DEL | REPLY
이 문제 풀긴 푸나?!
BlogIcon 세지군 | 2008/10/14 08:44 | PERMALINK | EDIT/DEL | REPLY
문제 풀려고 끄적였다가..GG 쳤다..-_-);;
영어가....OTL/....
BlogIcon seyool | 2008/10/14 09:15 | PERMALINK | EDIT/DEL
http://simples.co.kr/AlgorithmStart

여기 가면 한글로 된 문제도 있을거야 ㅎㅎ
BlogIcon vbdream | 2008/12/13 20:34 | PERMALINK | EDIT/DEL | REPLY
Euler는 율러가 아니라 오일러 아닌가요? :-p
가우스에 버금가는 천재 수학자중 한명...
BlogIcon seyool | 2008/12/14 01:15 | PERMALINK | EDIT/DEL
허걱 그렇군요.. 감사합니다. ㅎㅎ
무식이 탄로났군요 ㅡ.ㅜ
Name
Password
Homepage
Secret
prev"" #1 next