[exploit writing] 1_스택 기반 오버플로우 (2)

이미지
공격코드를 작성하기 전에 지겨운 메모리에 대해 공부해야한다. 목표 오버 플로우를 일으킬 메모리에 대해 알아보자. 특히 EIP , ESP 1) 메모리의 구조 1. code segment : 프로세서가 실행하는 명령. EIP 는 다음 명령의 트랙을 갖고 있음 2. data segment : 변수들, 동적 버퍼 3. stack segment : 함수에 데이터나 인자를 전달하기 위해 사용 (스택 메모리에 직접 접근하기 원한다면 ESP 를 사용) 2) 프로세스 메모리 맵 1. text segment : 읽기 전용 2. data/bss segment : 쓰기 가능.고정된 크기로 전역 변수와 정적 변수를 저장하는 데 사용        -data : 초기화 된 전역 변수,문자열, 상수 등        -bss : 초기화 되지 않은 변수 3. stack : LIFO 구조를 가진 데이터 구조체 3) 스택 사용 예제 do_something (param1) 이 호출 될 경우 개략적으로 다음과 같은 과정이 발생 PUSH *param1 -> CALL do_something -> PUSH EIP -> PUSH EBP -> PUSH buffer[128] 특정함수의 작업이 끝나면 전체 흐름은 main 함수로 돌아오게 된다. ㄱ. 버퍼 오버플로우를 발생시키기 위해 do_something::buffer 공간, 저장된 EBP, 그리고 최종적으로 저장된 EIP의 값을 덮어쓸 필요가 있다. buffer+EBP+EIP를 덮어쓴 후 스택 포인터는 저장된 EIP 다음 위치를 가리키게 된다. ㄴ. 함수 do_something이 리턴한 뒤 EIP와 EBP는 스택으로부터 pop되고, 버퍼 오버플로우 시 설정된 값을 가지게 된다. 간단히 말해서, EIP를 통제함으로써 함수가 '정상적인 흐름을 재개'하기 위해 사용할 리턴 어드레스를 변경할 수 있다. ㄷ. ...

[exploit writing] 1_스택 기반 오버플로우 (1) First

이미지
Corelan가 쓴 Exploit Writing 을 통해 이제 뭔가 보안 공부의 첫 걸음을 시작하려 한다. 목표 윈도우 xp에서 의 취약점을 이용한 스택 오버 플로우 한다. 준비 프로그램 1. kali (가상 머신) 2. windows xp (가상 머신) 3. windows xp 에서 windbg 4. windows xp 에서 펄 스크립트를 사용하기 위한 액티브펄 5. windows xp 에서 펄 스크립트를 사용하기 위한 per dev kit 6. Easy RM to MP3 Converter 과정 1. 우선 xp에서 Easy RM to MP3 Converter를 설치한다. 2. 빈 윈도우 xp에서는 위에 쓴 준비물 중 펄 스크립트 파일을 실행시키기 위한 프로그램들을 설치한다. 3. 메모장에 밑의 코드를 작성하고 test.pl이라는 이름으로 저장한다. my $file = "crash.m3u"; my $junk = "\x41" x 10000; open($FILE, ">$file"); print $FILE "$junk"; close($FILE); print "m3u File Created Successfully \n"; 4. 그럼 밑의 그림처럼 아이콘들이 있을 것이다. 6. test 파일을 실행 시키면 위에서 봤듯이 crash.m3u 라는 파일이 생성될 것이다. (커맨드 라인을 이용해서 test 파일을 실행시키면 m3u File Created Successfully 문구가 나옴) 7. 이제 Easy RM to MP3 Converter를 실행시키고 crash 파일을 LOAD 하면  에러 메시지가 나온다. 이 수행결과는 converter 가 crash 되지 않고, 정상적인 에러 메시지를 출력함을 알 수 있다. 8....

윈도우 설치에서 파티션 설정 오류(NTFS)

이미지
요즘 컴퓨터 OS를 갈아엎느라 시간가는 줄 모르게 컴퓨터를 해댔다. 다른 거 할 수도 없었다. 네트워크도 공부해야하는데 하지 못했다. 그래서 내가 포맷하고 OS 설치하면서 겪은 오류들을 적고자 한다. 처음 OS를 쓰다가 USB로 OS를 설치하다 보면 전에 쓰던 OS를 갈아엎는 경우가 있다. 밑의 그림처럼 나올 것이다. 그럼 주 하드디스크를 포맷버튼 누르고 OS를 설치하고 싶을 것이다. 하지만 대부분은 오류가 떠서 안될텐데..되면 말고.. (출처: http://digitaku.com/719) 윈도우를 NTFS로 포맷된 파티션에 설치해야하다는 오류가 뜬다면 (출처: http://caleb1783.tistory.com/362) 1. 우선 설치 시작화면으로 돌아가서 2. shift+f10 으로 cmd를 띄운다. 3. diskpart 명령어를 치고 enter을 누른다. 4. list disk 를 통해 디스크 목록을 본다. 5. 포맷하고 싶은 디스크를 확인한다. 6. 만약 disk0이면 select disk0 을 통해 disk0을 선택한다. 7. 그리고 가장 중요한 clean 명령어를 통해 깨끗히 지운다. 8. exit을 통해 나간다. 9. 다시 컴퓨터를 껐다가 usb 부팅을 통해 OS를 설치한다.

운영체제 ( OS ) -3-

이미지
Process (출처 : 나) Job    실행되기 전의 프로그램 묶음 Process    커널에 실행을 위해 등록된 엔티티    등록된 엔티티는 PCB에 할당됨    커널은 전반적인 시스템 퍼포먼스를 향상시키기 위해 프로세스를 관리한다. System        시스템은 resources, processes, kernel 로 이루어져 있다.        Passive Entity       H/W resources          Processor,memory,hard disks ...       S/W resources           Messages, signals, files ...    Active Entity        Processes    Kernel        Process - Kernel - Resources       프로세스에서 커널을 통해 리소스에게 접근할 수 있다.        프로세스가 바로 리소스에게 접근할 수 없다. PCB(Process Control Block)    각각의 커널에 등록된 프로세스들에 관한 정보들을 저장하는 곳    커널에 자리 잡고 있음    1) PID    2) Process state    3) Sched...

운영체제 ( OS ) -2-

이미지
Dual Mode Operation Two separate modes 1. User mode (11 bits)    CPU를 사용자 프로그램이 사용 2. Kernel mode (00 bits)    CPU를 커널(OS)가 사용 Mode Change    Trap 이나 Interrupt가 발생할 때, 하드웨어는 User Mode 에서 Kernel Mode로 바꿈. Interrupt    예상치 못한 CPU 외부 사건    하드웨어는 CPU에게 전기신호를 보내 Interrupt를 발생시킨다.    Interrupt가 일어났다고 해서 비정상적인 상태가 아니라 정상 상태에서 나는 것이다.    예를 들면, 우선 순위가 높은 프로세스가 들어올 때 Interrupt를 발생시키고    실행중인 프로세스를 밖에서 기다리게 하고 우선 순위 높은 프로세스를 실행시킨다. Trap    실행중인 프로그램의 에러 - Exception ex)메모리 공간 잘못 접근    유저 프로그램으로부터 특정한 요청 - System call  ex)디스크 블록을 커널에게 읽어달라고 요청 (출처 : 나) System call    *Process control    *File management    *Device management    *Information management    *Communications    *ETC

운영체제 ( OS ) -1-

이미지
Operating System 소프트웨어의 가장 기본인 OS를 정리해보자. OS의 개념    컴퓨터 하드웨어, 소프트웨어 자원을 관리하고 컴퓨터 프로그램을 위해 기본적인 서비스들을 제공하는 소프트웨어이다. OS의 기능    1. 유저의 편의를 위한 인터페이스 제공           CLI : command line interface           GUI : graphical user interface           EUCI : end-user comfortable interface    2. 효율성을 위한 자원 관리           Processor management           Memory management           File management           I/O management           Networking    3. 프로세스 관리           Process management           Thread management    + 보안 (출처 : http://ee.hawaii.edu/~tep/EE160/Book/chap1/section2.1.1.html) OS 유형     1. 동시 접속 유저의 수   ...

프로젝트 오일러는 방학에 다시 시작

프로젝트 오일러는 다시 방학에 시작. 학기 중에는 리눅스 익숙해지기 자료구조 완벽히 이해하기 시스템과 네트워크 이해하기 웹해킹도 가끔씩 공부하기