해킹 공부 54

section 1) 디지털 포렌식 기초

디지털 포렌식 대상 : 컴퓨터, 디스크, 메모리, (네트워크 장비 등...) 디스크 이미징 : 디스크를 파일의 형태로 만들어 가져오는 것 디스크 마운트 : 디스크 이미징된 파일을 내 컴퓨터에 드라이브로 등록하는 것 메모리 덤프 : 특정 시점의 메모리 상태를 사진 찍듯이 가져오는 것, 켜져 있는 컴퓨터 수사 시 사용 디지털 포렌식 도구 설치 및 실습 1. FTK Imager 디스크 이미징, 마운트, 메모리 덤프 도구 physical drive -> next -> 드라이브 선택 -> finish Image Destination에서 Add.. 클릭 -> 이미지 타입 중 E01(더 압축된 타입임) 선택 -> Image Destionation 폴더 위치 선택, Image fragment size 0으로 설정(= ..

section 2) 침해사고 대응기법_도구 설치, 환경 설정, 문제 다운로드

메모리 포렌식 진행 위한 도구 설치, 환경 설정, 문제 다운로드 1. Volatility 설치 https://www.volatilityfoundation.org/26 Volatility 2.6 Release Volatility 2.6 - an advanced memory forensics framework www.volatilityfoundation.org 다운로드 후 압축 해제 2. 시스템 환경변수 설정 시스템 환경변수에 등록해 두면 어느 경로에 있든지 해당 파일 접근 가능 시스템 환경변수 편집기 열기 -> 환경변수(N) -> 시스템 변수(S) 목록에서 Path 찾아 더블클릭 -> volatility.exe 파일의 위치 추가 -> 확인 -> 확인 -> 확인 3. windows terminal 설치 윈도..

DreamHack_System hacking stage1

- 시스템 해킹 로드맵 수강 위한 기초 능력 시스템 해킹에 필요한 기초 c언어, python 해석 능력 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 //"Welcome Hackers :)"가 출력되는 입력값을 찾아보자 #include #include #include int main() { int sz = 0x30; // 0x30은 십진수로 48 char *buf = (char *)malloc(sizeof(char) * sz); // 문자열 메모리 할당 puts("Hello World!"); // puts는 문자열만 출력 가능 printf("Education + Hack = ?\\n"); // printf는 정수,실수,문자(열) 출력 가능 fgets(bu..

[해커스쿨 LOB] level11_skeleton

id : skeleton pw : shellcoder 1. 문제 파일 내용 확인 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 [skeleton@localhost skeleton]$ ls // 파일 목록 확인 golem golem.c [skeleton@localhost skeleton]$ cat golem.c // golem.c 내용 확인 /* The Lord of the BOF : The Fellowship of the BOF - golem - stack destroyer */ #include #include extern char **environ; main(in..

[해커스쿨 LOB] level 6_wolfman

id : wolfman pw : love eyuna 1. 파일 목록 확인, 소스코드 분석 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 [wolfman@localhost wolfman]$ ls -al //파일 목록 확인 total 48 drwx------ 2 wolfman wolfman 4096 Mar 29 2010 . drwxr-xr-x 25 root root 4096 Mar 30 2010 .. -rw-r--r-- 1 wolfman wolfman 24 Feb 26 20..

해커스쿨 LOB level 5 orc

id : orc pw : cantata 1. 파일 목록 확인, 소스코드 분석 ls -al로 파일 목록을 보니 이번 단계의 문제 파일은 wolfman인 듯 하다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 [orc@localhost orc]$ cat wolfman.c // 파일 내용 확인 /* The Lord of the BOF : The Fellowship of the BOF - wolfman - egghunter + buffer hunter */ #include #include extern char **environ; main(int ar..

해커스쿨 LOB level 4 goblin

id : goblin pw : hackers proof 1. 파일 목록 확인, 소스코드 분석 ls로 파일 목록 확인, orc와 orc.c가 눈에 띈다. 우선 orc가 어떻게 동작할지 미리 파악하기 위해 orc.c의 내용을 살펴봤다. 입력값의 길이가 2보다 작으면 argv error 출력 후 실행 종료 (1) (2) (3) (1) memset은 리눅스에서 메모리를 초기화하는 함수이다. environ 배열이 인자로 들어있는데, 이 부분으로 보아 환경변수를 쭉 초기화 하는 것으로 예상된다. (2) 입력값의 index [1][47] 값이 \xbf이지 않으면 stack is still your friend. 문구 출력 후 프로그램이 종료된다. \xbf는 주소값일테니, 인자를 넣을 때 이것을 신경 써야 프로그램이 ..

해커스쿨 LOB level 3

id : cobolt pw : hacking exposed 1. 파일 목록 확인, 소스코드 분석 파일 목록을 확인하니 goblin 파일이 눈에 띈다. goblin.c 내용을 보면 gets함수로 입력받아 입력값을 buffer에 저장하고, 이 buffer 내용을 출력하는 코드이다. gets 함수는 입력 받은 값의 길이와 이것을 저장할 공간의 길이를 확인하지 않고 그냥 넣어버리기 때문에 버퍼오버플로우 공격에 취약한 대표적인 함수 중 하나이다. 이 취약점을 이용해 BOF를 일으킬 것이다. 일단 goblin을 실행해 봤더니 입력값을 받게 되어있고, 입력한 그대로 출력된다. buffer 크기보다 큰 값을 넣었더니 정상 실행은 되지만 Segmentation fault 경고가 나왔다. gdb로 보니 buffer가 딱 ..

해커스쿨 LOB level 2

id : gremlin pw : hello bof world 1. 파일 목록 확인, 소스코드 분석 파일 목록 확인(ls)을 했더니 cobolt라는 실행파일과 c소스파일이 나왔다. 우선 cobolt.c의 내용을 확인해봤다(cat). level1과 같은 형식의 문제인데 buffer의 크기가 16으로 매우 작다는 것이 포인트이다. cobolt 프로그램을 실행(./)하면 argv error라고 출력되고, 입력값의 크기를 너무 크게 넣으니 Segmentation fault가 나왔다. 2. tmp 디렉토리 생성, 환경변수 확인 환경변수 확인 등의 작업을 위해 tmp 디렉토리를 생성(mkdir) 후 tmp디렉토리로 이동(cd)했다. 25byte쉘코드로 시도해봤는데 계속 오류가 나길래 인터넷 검색 후 41byte 쉘코..