본문 바로가기

Learning

[War Game] FTZ LEVEL 5 $ id uid=3005(level5) gid=3005(level5) groups=3005(level5) $ cat hint /usr/bin/level5 프로그램은 /tmp 디렉토리에 level5.tmp 라는 이름의 임시파일을 생성한다. 이를 이용하여 level6의 권한을 얻어라. level5.tmp 라는 파일이 생성되는 것 같다. /usr/bin 에 가보면 해당 파일이 존재하는 것을 볼 수 있다. $ ls -l /usr/bin/level5 -rwsr-x--- 2 level6 level5 14402 Mar 29 2003 /usr/bin/level5 SETUID 권한이 있고 level5 그룹은 실행 권한만 있다. /usr/bin/level5 프로그램을 실행시켜 본다. 아무일도 일어나지 않는다. /tmp 에.. 더보기
[War Game] FTZ LEVEL 4 $ id uid=3004(level4) gid=3004(level4) groups=3004(level4) $ cat hint 누군가 /etc/xinetd.d/에 백도어를 심어놓았다.! 백도어란? 시스템 관리자가 일부러 열어 놓은 시스템의 보안 구멍이다. 처음에 백도어가 나오게 된 계기는 회사원들이 퇴근을 하고 원격으로 회사의 업무를 하기 위해 만들어 졌다고 한다. 하지만 해커들은 이것을 악용하여 공격을 위한 뒷문을 만들어 두는 것이다. xinetd.d란? 리눅스 부팅 과정이 진행되면서 네트워크 데몬도 가동되는데 이를 수행하는 것이 xinetd 슈퍼 데몬 이다. 네트워크 데몬은 FTP,텔넷,SSH,아파치 등과 같은 네트워크 통신을 위한 데몬을 말한다. xinetd는 이들의 부모 프로세스가 된다. 먼저 /e.. 더보기
[War Game] FTZ LEVEL 3 $ id uid=3003(level3) gid=3003(level3) groups=3003(level3) $ ls hint public_html tmp $ cat hint 다음 코드는 autodig의 소스이다. #include #include #include int main(int argc, char **argv){ char cmd[100]; if( argc!=2 ){ printf( "Auto Digger Version 0.9\n" ); printf( "Usage : %s host\n", argv[0] ); exit(0); } strcpy( cmd, "dig @" ); strcat( cmd, argv[1] ); strcat( cmd, " version.bind chaos txt"); system( cmd.. 더보기
[War Game] FTZ LEVEL 2 $ id uid=3002(level2) gid=3001(level1) groups=3001(level1) $ ls hint public_html tmp $ cat hint 텍스트 파일 편집 중 쉘의 명령을 실행시킬 수 있다는데... 우선 LEVEL1 처럼 LEVEL3 권한을 가진 파일을 찾아본다. $ find / -perm -4000 -user level3 2>/dev/null /usr/bin/editor 폴더에 들어가서 실행 해보면 아래와 같이 일반적인 VI 편집기가 보인다. ~ ~ VIM - Vi IMproved ~ ~ version 6.1.320 ~ by Bram Moolenaar et al. ~ Vim is open source and freely distributable ~ ~ Help poor.. 더보기
05_Level4 -> Level5[FTZ] xinetd 방식 여러가지 로컬/원격 백도어 ■ Level4 -> Level5 목적 xinetd 방식(원격 백도어) xinetd 방식에 대한 이해 (용어) 로컬백도어/원격백도어 원격에서 백도어를 이용해 권한을 얻어낼 때 xinetd 방식을 사용한다. [참고] xinetd 방식에 대해서 ■ 서버에서 서비스 하는 방법의 종류 standalone 방식의 서비스(EX: web, mail) 서버에서 서비스 데몬을 직접 띄워 놓고 서비스 하는 방식 xinetd 방식의 서비스(EX: telnet) 서버에서 xinetd 데몬을 띄워 놓고 클라이언트가 서비스 요청을 하면 그때 xinetd 데몬이 적당한 데몬을 띄워주는 방식 standalone & xinetd 방식의 차이점 ■ standalone 방식의 서비스(EX: web) -> 서비스 요청이 많은 경우에 적당 .. 더보기
누가 언제 실행했는지 로그파일에 기록(프로그램 대치 프로그램) 기존 프로그램을 대치하는 프로그램(쉘 스크립트)기존의 프로그램을 대치하는 프로그램=> 목적-백도어같은 프로그램이 실행되어있는지 알 수 없도록좋은용도/나쁜용도 (linux200) (목적) 좋은 용도(EX: /usr/bin/passwd) /usr/bin/passwd/usr/bin/passwd 명령어를 사용할 때 누가(id CMD)/언제(data CMD) 실행했는지 별도의 로그 파일에 기록할 수 있는가? # vi /root/bin/passwd #!/bin/bash id >> /test/passwd.logdate >> /test/passwd.logecho >> /test/passwd.log /usr/bin/passwd.old $* /* # mv /usr/bin/passwd /usr/bin/passwd.old *.. 더보기
04_Level3 -> Level4[FTZ] system() 함수의 취약점 분석 ■ Level3 -> Level4 목적 system() 함수의 취약점 ■ Level4 문제에 도전하기 level3 사용자로 로그인 -> ID/PASS: level3/can you fly? [level3@ftz level3]$ ls -l 합계 12 -rw-r--r-- 1 root root 543 11월 26 2000 hint drwxr-xr-x 2 root level3 4096 2월 24 2002 public_html drwxrwxr-x 2 root level3 4096 1월 15 2009 tmp [level3@ftz level3]$ cat hint 다음 코드는 autodig의 소스이다. #include #include #include int main(int argc, char **argv){ char c.. 더보기
Extundelete Tool report 1. Frensics Tools List ■ extundelete 삭제한 파일 복구하기(extundelete) ■ Package Description extundelete는 ext3 또는 ext4 파티션에서 삭제 된 파일을 복구 할 수있는 유틸리티입니다. ext3 및 ext4 파일 시스템은 Mint, Mageia 또는 Ubuntu와 같은 Linux 배포판에서 가장 일반적인 기본 파일 시스템입니다. extundelete는 파티션의 저널에 저장된 정보를 사용하여 파티션에서 삭제 된 파일을 복구하려고 시도합니다. 특정 파일을 삭제 취소 할 수 있다는 보장이 없으므로 항상 올바른 백업 시스템을 갖춰야합니다. 또는 파일을 복구 한 후에도 적절한 백업 시스템을 마련해야 합니다. [주의사항] 4GB 이상의 파일은 지.. 더보기
03_level2 -> level3[FTZ] vi 편집기 백도어 ■ Level2 -> Level3 목적 편집기 사용법 ) --> ) --> ) --> ■ Level2 문제에 도전하기 ) --> level2 사용자로 로그인 -> ID/PASS: level2/hacker or cracker ) --> [level2@ftz level2]$ ls -l -rw-r--r-- 1 root root 60 3월 23 2000 hint drwxr-xr-x 2 root level2 4096 2월 24 2002 public_html drwxrwxr-x 2 root level2 4096 1월 16 2009 tmp ) --> [level2@ftz level2]$ cat hint ) --> 텍스트 파일 편집 중 쉘의 명령을 실행시킬 수 있다는데... ) --> ) --> [level2@ftz .. 더보기
[실습] C언어 코드와 어셈블리 언어 코드 테이블 제작 C 언어 코드와 어셈블리 언어 코드 테이블 #include(){ } 0x080482f4 : push %ebp 0x080482f5 : mov %esp,%ebp 0x080482f7 : sub $0x8,%esp 0x080482fa : and $0xfffffff0,%esp 0x080482fd : mov $0x0,%eax 0x08048302 : sub %eax,%esp 0x08048304 : leave 0x08048305 : ret 0x08048306 : nop 0x08048307 : nop #include(){ printf(""); } 0x08048328 : push %ebp 0x08048329 : mov %esp,%ebp 0x0804832b : sub $0x8,%esp 0x0804832e : and $0xff.. 더보기
[과제] gdb(디버거) 사용법 gdb(디버거) 사용법에 대한 조사. [시스템 해킹] gdb(디버거) 사용방법 GDB? GDB는 GNU Debugger의 약자로 Console debugger이다. 먼저 디버깅을 수행하기 위해서는 소스코드를 컴파일할 때 디버깅 정보를 포함하도록 해야한다. gcc에서 이에 해당하는 옵션은 -g 이다. Windows - OllyDBG Linux - GDB 사용방법 ㄱ) $ gdb a.out (gdb -q a.out) 따로 설정 하지 않으면 AT&T기반의 소스코드 사용 (gdb) set dis intel Intel 기반으로 변경 가능 ㄴ) (gdb) disassemble main 메인함수 검색 (gdb) break *주소값 Break Point 설정 (gdb) delete 번호 B.P 삭제 ㄷ) (gdb) R.. 더보기
[참고]어셈블리 예제 [EX] sample.c (C 언어 작성) --- 변환 --> sample.a (어셈블리어) $ cd $ cd tmp $ vi sample.c int function(int a, int b){ char buffer[10]; a = a + b; return a; } int main(void){ int c; c = function(1,2); return 0; } $ gcc -S -o sample.a sample.c $ ls -l -rw-rw-r-- 1 level1 level1 570 11월 25 12:17 sample.a -rw-rw-r-- 1 level1 level1 131 11월 25 12:16 sample.c $ file * sample.a: ASCII assembler program text samp.. 더보기
[참고]어셈블리어의 기본 문법과 명령 어셈블리어의 기본 문법과 명령 어셈블리 명령어는 상당히 많다. 하지만 어셈블리언어로 코딩이 아닌 디버깅을 목적으로 하기 때문에 필수적으로 알아야할 기본적인 명령어만 알아두어도 좋다. 또한 기본 문법과 명령을 공부할때 막연하게 암기 하는 것 보다 좋은 예제를 통해서 그때그때 필요한 명령어를 찾아보는식으로 공부하는게 좋다. PUSH,POP 스택에 값을 집어넣는걸 PUSH, 스택에 있는 값을 가져오는 것이 POP이다. MOV MOV는 MOVE라고 해석할 수 있는데. 여기서는 값을 넣는다는 표현이 어울린다. 예로 MOV eax,ecx는 ecx를 eax에 넣는다라는 표현이다. LEA LEA는 MOV와 비슷한 명령이다. 차이점이라면 MOV는 값을 가져오는 것이고 LEA는 값이 들어있는 주소값을 가져온다 라는 뜻이다.. 더보기
[참고]어셈블리 언어에 대해서_2 (5) 어셈블리(Assembly) (5-1) 용어 ■ 기계어 종류 : 각 CPU 마다 고유 기계어가 있음 모양 : CPU가 바로 해독할 수 있는 0과 1로 구성 특징 : 사람이 이해하기 어려움 기타 : 컴파일을 할 필요가 없음 ■ 어셈블리어 종류 : 각 CPU 마다 고유 어셈블리어 존재 모양 : 사람이 이해하기 쉽도록 OP-CODE 사용 특징 : 기계어와 1:1로 모든 명령이 대응 기타 : 어셈블러를 통해 기계어로 컴파일 해야 함 ■ 어셈블리(Assembly) 소개 기계어 어셈블리어 고급언어 55 98ES 83EC 08 C70424 57000000 E8 7E050000 C9 C3 PUSH EBP MOV EBP,ESP SUB ESP,8 MOV DWORD PTR [ESP],57 CALL LEAVE RETN .. 더보기
[참고]어셈블리 언어에 대해서 어셈블리(Assembly) 언어 1. 리버스 엔지니어링 (1) 리버스 엔지니어링(Reverse Engineering, Reversing)이란? 리버스 엔지니어링(Reverse Engineering)은 인조물로 부터 청사진을 얻는 것에서 유래되었다. 이진 코드로 되어 있는 실행 파일을 분석하려는 일련의 행위이다. 소프트웨어를 분석하고 동작을 해명해나가는 것을 리버스 엔지니어링이라 부른다. 이것은 멀웨어(Malware, 악성코드)에 한정하지 않고 일반적인 소프트웨어를 분석하는 것을 말하기 때문에, 컴퓨터 보안과 관계가 없는 곳에서도 사용된다. (2) 리버스 엔지니어링의 종류 보안적 관점 소프트웨어를 개발 후 개발된 제품에 대해 암호화 알고리즘과 관련된 보안의 평가 해커들이 운영체제/애플리케이션의 취약점을 분.. 더보기
[한국정보기술연구원] '2017 KISBIC' BoB 정보보안 아이디어 공모전 참가 주제:제품의 취약성이나 서비스 취약점이 아닌 개인의 보안 문제 기업이나 서비스가 이루어 지는 곳에서는 보안점검 및 대응 활성화 하지만 개인에 대한 보안점검 전혀 이루어지지 않는 상태. 실생활에 많은 인터넷 사물 이용할것으로 예측 전자 사회 첨단 기기를 활용한 범죄가 기승을 부리고 있음 그에 따른 개인 보안 필수적 요소 특히 기성세대의 보안의식이 매우 중요하며 큰 피해를 예방할수 있는 방법이다. 기업 대상이 아닌 개인을 대상으로 하는 해킹 위협 제목: They're all happy? (그들은 모두 행복하죠?) IoT, 모두 편히 누릴 수 있는 것인가 ? 주변에서 기계치 라는 말을 종종 들을 수 있다. 기계와 친하지 않은 사람, 또는 기계를 잘 다루지 못하는 사람. 특히 나이 많은 부모님들은 스마트폰을 사.. 더보기
02_level1 -> level2[FTZ] 백도어에 대한 이해와 디버깅 동작 ■ Level1 -> Level2 ■ 목적 백도어(Backdoor)에 대한 이해 ■ 백도어란? 악의적인 프로그램(뒷문) 악의적인 사용자가 시스템의 보안 헛점을 응용하는 고의로 만들어진 프로그램이다. 목적은 시스템에 대한 사용자 인증 등 정상적인 절차를 거치지 않고 응용프로그램 또는 시스템에 접근할 수 있는 프로그램. ■ level1 문제 [level1]$ cd [level1]$ ls -l total 12 -rw-r--r-- 1 root root 47 Apr 4 2000 hint drwxr-xr-x 2 root level1 4096 Dec 7 2003 public_html drwxrwxr-x 2 root level1 4096 Aug 19 21:45 tmp [level1]$ cat hint level2 권한.. 더보기
01_시스템해킹 리버싱 FTZ를 리버싱의 주제로 선정한 이유는 FTZ에 각 LEVEL 에서 사용하는 소스의 목적을 분석하고 그에 맞는 의사 코드를 gdb를 이용해 디버깅하여 리버싱을 통해 복원해보는 과정을 주로 다루며 원본 코드 소스와 비교 해보는 과정을 학습하기 위함이다. 최종 목적은 level15이후의 버퍼 오버 플로우를 공부하고 그 단원의 코드를 분석해보는 것에 있다. 참고자료 Reverse Engineering on HackMe System 학습목표 ■ 리버싱을 통한 의사 코드(가상 코드) 생성 ■ exploit 코드 개발 상대편의 취약성을 공격하는 코드 HackMe(ftz.hackerschool.org) 참고 사이트 : http//inhack.org/wordpress/?cat=68 문제 풀이에 대한 참고 사이트 htt.. 더보기
[Forensics Tools] Xplico 네트워크 분석 툴 (Xplico) ■ Package Description Xplico의 목표는 포함 된 응용 프로그램 데이터를 인터넷 트래픽 캡처에서 추출하는 것입니다. 예를 들어 pcap 파일에서 Xplico는 각 전자 메일 (POP, IMAP 및 SMTP 프로토콜), 모든 HTTP 내용, 각 VoIP 호출 (SIP, MGCP, H323), FTP, TFTP 등을 추출합니다. Xplico는 네트워크 프로토콜 분석기가 아닙니다. ■ OPTIONS # xplico -h # xplico -h xplico v1.0.1 Internet Traffic Decoder (NFAT). See http://www.xplico.org for more information. Copyright 2007-2012 Gianluc.. 더보기
[Forensics Tools] Volatility 메모리 분석 툴 (Volatility) ■ Package Description 추출 기술은 조사중인 시스템과 완전히 독립적으로 수행되지만 시스템의 런타임 상태에 대한 전례없는 가시성을 제공합니다. 이 프레임 워크는 휘발성 메모리 샘플에서 디지털 아티팩트를 추출하는 것과 관련된 기술과 복잡성을 사람들에게 소개하고이 흥미 진진한 연구 영역에 대한 추가 작업을위한 플랫폼을 제공하기위한 것입니다. [사용방법] # volatility 참조 사이트 https://code.google.com/p/volatility/ ■ OPTIONS # volatility -h # volatility -h Volatility Foundation Volatility Framework 2.4 Usage: Volatility - A me.. 더보기