pwnkidhn.github.io

고정 헤더 영역

글 제목

메뉴 레이어

pwnkidhn.github.io

메뉴 리스트

    • 분류 전체보기 (194)
      • memo (0)
      • Pwnable Exploitation (19)
        • 01.Shellcode (4)
        • 02.Return to Shellcode (1)
        • 03.RTL(Return to libc) (2)
        • 04.Frame faking(Fake ebp) (1)
        • 05.Frame Pointer Overwrite (2)
        • 06.ROP(Return Oriented Prog.. (3)
        • 07.SROP(Sigreturn-oriented .. (2)
        • 08.JOP(Jump-Oriented Progra.. (1)
        • 09.Return-to-csu(__libc_csu.. (0)
        • Malloc - glibc(ptmalloc2) (3)
      • Pwnable Write-Up (54)
        • 00.CTF (0)
        • 01.hackerschool F.T.Z (20)
        • 02.hackerschool L.O.B (21)
        • 03.dreamHack (13)
        • 04.HackCTF (0)
      • Reversing Write-Up (38)
        • 01.Abex's crackme (5)
        • 02.CodeEngn Basic (20)
        • 03.CodeEngn Advance (13)
      • Fuzzing (1)
        • Theory (1)
      • Programming (22)
        • Data Structure (0)
        • Windows System (22)
      • Computer Science (60)
        • Computer Architecture (18)
        • OS Concepts (29)
        • Linux System (5)
        • Reverse Core (8)

    검색 레이어

    pwnkidhn.github.io

    검색 영역

    컨텐츠 검색

    Programming/Windows System

    • 08.2 파이프 방식의 IPC

      2020.04.18 by RACC8N

    • 08.1 핸들 테이블과 오브젝트 핸들의 상속

      2020.04.18 by RACC8N

    • 07.3 Signaled vs Non-Signaled

      2020.04.18 by RACC8N

    • 07.2 메일슬롯 방식의 IPC

      2020.04.18 by RACC8N

    • 07.1 프로세스간 통신(IPC)의 의미

      2020.04.18 by RACC8N

    • 06.3 커널 오브젝트와 Usage Count

      2020.04.05 by RACC8N

    • 06.2 커널 오브젝트와 핸들의 종속 관계

      2020.04.05 by RACC8N

    • 06.1 커널 오브젝트에 대한 이해

      2020.04.05 by RACC8N

    08.2 파이프 방식의 IPC

    파이프의 종류 - 이름없는 파이프 (Anonymous Pipe) - 이름있는 파이프 (Named Pipe) 메일슬롯과 이름없는 파이프 비교 - 메일슬롯 : 서로 관련이 없는 프로세스들(네트워크로 연결되어 통신하는 프로세스들이나 부모 자식간의 연관 관계가 전혀 없는 프로세스들) 사이에서 통신할 때 유용 - 이름없는 파이프 : 지극히 관계가 있는(부모 자식관계) 프로세스들 사이에서 통신할 때 유용 메일슬롯과 이름있는 파이프 비교 - 메일슬롯 : 단방향 통신, 브로드캐스팅 방식 지원 - 이름있는 파이프 : 양방향 통신 ● 메일슬롯 : 브로드캐스트 방식의 단방향 통신방식을 취하며, 메일슬롯에 할당된 주소를 기반으로 통신하기 때문에 관계없는 프로세스들 사이에서도 통신이 가능하다. ● 이름없는 파이프 : 단방향 통..

    Programming/Windows System 2020. 4. 18. 18:47

    08.1 핸들 테이블과 오브젝트 핸들의 상속

    핸들과 커널 오브젝트 (REVIEW) : 핸들 256을 통해서 0x2400번지에 할당되어 있는 메일슬롯에 접근이 가능하다. ※ 0x2400번지에 커널 오브젝트가 생성되면서 핸들 256을 반환했다. 하지만 핸들 256이 0x2400번지에 존재하는 커널 오브젝트를 의미한다는 정보는 어디에도 없다. 프로세스의 핸들 테이블 도입 핸들 테이블은 프로세스로 전달되는 핸들 정보가 어떻게 전달 및 저장되는지 구체적으로 보여주고 있다. ※ 핸들 테이블은 핸들 정보를 저장하고 있는 테이블로서 프로세스별로 독립적이다. 핸들의 상속 CreateProcess 함수를 호출하면 새로운 자식 프로세스가 생성된다. 자식 프로세스를 위한 핸들 테이블도 생성된다. CreateProcess 함수의 다섯 번째 전달인자가 무엇이냐에 따라서 부..

    Programming/Windows System 2020. 4. 18. 16:59

    07.3 Signaled vs Non-Signaled

    Windows 운영체제에 의해서 생성되는 커널오브젝트는 두 가지 상태를 지닌다. 이는 리소스에 특정 상황이 발생되었음을 알리기 위한 용도이다. 커널 오브젝트의 두 가지 상태(State) - Signaled 상태 (신호를 받은 상태) - Non-Signaled 상태 (신호를 받지 않은 상태) 커널 오브젝트에 커널 오브젝트의 상태 정보를 저장하는 멤버 변수가 있다. [FALSE : Non-Signaled, TRUE : Signaled] ※ 커널 오브젝트의 상태가 변하는 시점은 커널 오브젝트 종류에 따라서 달라진다. 프로세스 커널 오브젝트의 상태 프로세스 커널 오브젝트는 프로세스가 생성될 때 만들어진다. > 처음 커널 오브젝트가 생성되면 커널 오브젝트의 상태는 Non-Signaled 상태에 놓이게 된다. > ..

    Programming/Windows System 2020. 4. 18. 15:22

    07.2 메일슬롯 방식의 IPC

    Sender : 데이터를 전달하고자 하는 프로세스 Receiver : 데이터를 수신하는 프로세스 메일슬롯(Mail Slot) 원리 " 데이터를 주고 받기 위해서 프로세스가 우체통을 마련하는 것" Receiver가 밖에다가 우체통(MailSlot)을 하나 걸어둔다. -> Sender는 Receiver의 MailSlot을 향하여 데이터를 날린다. -> Receiver는 MailSlot에 있는 데이터를 읽는다. ※ Receiver가 Sender의 메모리 공간에 접근할 수 있으면 데이터 전달은 수월해진다. but 프로세스는 다른 프로세스 메모리 영역을 접근할 수 없다. MailSlot 구성을 위해 필요한 요소 [Receiver] Receiver는 MailSlot을 생성해야 한다. CreateMailslot() ..

    Programming/Windows System 2020. 4. 18. 14:42

    07.1 프로세스간 통신(IPC)의 의미

    프로세스간 통신 IPC(Inter-Process Communication) : 둘 이상의 프로세스가 데이터를 주고받는 행위 -> 프로세스들은 서로 만나서 데이터를 주고 받는 것이 불가능하다. 프로세스들이 서로 만날 수 없는 이유 프로세스는 서로 독립적인 메모리 공간을 갖기 때문에 자신에게 할당된 메모리 공간 이외에는 접근이 불가능하다. 프로세스들이 서로 만나지 못하게 디자인한 이유 MP3 Player와 MS WORD를 실행시켜 음악을 들으면서 문서작업을 하고 있다. 만약 프로세스들이 서로 만날 수 있다면 MP3 Player가 MS WORD의 메모리 공간을 망가뜨릴 수 있다. 따라서 안전성을 높이기 위해 프로세스는 자신에게 할당된 메모리 공간 이외에는 접근이 불가능하다.

    Programming/Windows System 2020. 4. 18. 14:02

    06.3 커널 오브젝트와 Usage Count

    커널 오브젝트를 생성한 주체가 커널 오브젝트를 소멸시킬 권한을 가지고 있다. > CreateProcess함수는 어디까지나 프로세스 생성에 대한 요청일 뿐이다. > 따라서 커널 오브젝트의 생성 주체는 운영체제이다. A라는 프로세스가 생성되면, A 프로세스를 위한 커널 오브젝트가 생성된다. > 이때 커널 오브젝트는 완전히 프로세스를 대표한다. 하지만 프로세스가 소멸된다고 해서 커널 오브젝트가 소멸된다고 말할 수 없다. > 운영체제가 커널 오브젝트 소멸시기를 결정하는 기준이 뭘까? Closehandle 함수는 핸들을 닫는 기능을 한다. 즉 "핸들의 반환"이다. ※ Closehandle 함수로 핸들을 반환했다고해서 무조건 커널 오브젝트가 소멸되는 것은 아니다. 프로세스는 종료시 종료 코드를 반환하고, 이 종료 ..

    Programming/Windows System 2020. 4. 5. 19:26

    06.2 커널 오브젝트와 핸들의 종속 관계

    커널 오브젝트의 종속 관계 "커널 오브젝트는 Windows 운영체제에 종속적이다." 커널 오브젝트는 프로세스에 종속적인 것이 아니라 운영체제에 종속적인 관계로 > 커널 오브젝트의 소멸시점은 운영체제에 의해서 결정된다. > 여러 프로세스에 의해서 접근 가능하다. (함수 호출을 통한 간접 접근) 핸들의 종속 관계 핸들(핸들 테이블)은 운영체제에 종속적이지 않고 프로세스에 종속적이다. 커널 오브젝트의 공유 예제 A 프로세스가 B 프로세스를 생성한다. 그러자 B 프로세스는 자신의 우선 순위를 높인다. > 잠시 후 열받은 A프로세스는 B 프로세스의 우선순위를 원래대로 돌려 놓는다. > SetPriority(pi.hProcess, NORMAL_PRIORITY_CLASS) 두 개의 프로세스가 하나의 커널 오브젝트(B..

    Programming/Windows System 2020. 4. 5. 18:57

    06.1 커널 오브젝트에 대한 이해

    커널 오브젝트 : 커널에서 관리하는 중요한 정보를 담아둔 데이터 블록 프로세스를 생성하는 실질적인 주체는 프로그래머가 아니라 운영체제이다. > 또한 생성된 프로세스를 관리하는 것도 운영체제가 한다. > 운영체제가 프로세스를 관리하려면 프로세스에 관련된 정보가 있어야한다. > 프로세스 관리 구조체 : 프로세스를 관리하기 위해 필요한 구조체 프로세스가 생성될 때마다 '프로세스 관리 구조체' 변수가 하나씩 생성되고, 새롭게 생성된 프로세스 정보들로 초기화 되는데 이것이 바로 커널오브젝트의 정체이다. 프로세스가 생성될 때에만 커널 오브젝트가 생성되는 것은 아니다. > 쓰레드 생성, IPC를 위한 파이프나 메일슬롯 생성, 파일 생성. ※ 파일 역시 Windows 커널에 의한 관리 대상이다. "Windows 운영체..

    Programming/Windows System 2020. 4. 5. 17:57

    추가 정보

    페이징

    이전
    1 2 3
    다음
    TISTORY
    pwnkidhn.github.io © rvkhun
    페이스북 트위터 인스타그램 유투브 메일

    티스토리툴바