전체 글 161

패스워드 크래킹

* 패스워드 크래킹 - 해당 시스템에 저장되어 있는 비밀번호를 알아내는 기술 * 암호화 - 데이터 전송 시 데이터가 손실되거나 변경되는 것을 방지하기 위해 데이터를 변환하여 전송하는 방법 - 대칭형 DES, 비대칭형 RSA * 해시 - 임의의 데이터로부터 짧은 전자지문을 만들어내는 방법 - 해시 함수는 데이터를 자르고 치환하거나 위치를 바꾸는 방법을 사용해 결과를 만들어 냄 - 리눅스 - md5(취약) - 왼도우 - lm, ntlm -> ntlmv2 * 패스워드 크래킹 방법 1. Brute Force Attack - 패스워드에 사용될 수 있는 문자열의 범위를 정하고 그 범위 내에서 가능한 모든 값을 대입 - 언젠간 뚫림 - 시간이 상대적으로 오래 걸림 2. Dictionary Attack - 패스워드로 ..

SetUID와 권한상승

* 파일과 디렉터리 생성 시 기본 권한- 파일 -> 644- 디렉터리 -> 755 * 파일, 디렉터리의 기본 생성 최고 권한(umask 활용)파일 -> 666 (chmod로 실행권한 줄 수 있음 -일반 파일에 실행권한을 부여 하면 파일 색(실행 파일)이 연두색으로 변함)디렉터리 -> 777 * /etc/profile 파일- umask 설정 돼 있음 * SetUID- 프로그램 실행 시 파일 소유자의 권한으로 실행 * /etc/shadow 파일의 접근권한- ---------- 권한 설정이 안 돼있어도 소유자(root)는 열람 가능 * /usr/sbin/passwd 명령어의 접근권한- rwsr-xr-x- 비밀번호를 바꿀때는 /etc/shadow파일에 접근해야 하는데 SetUID를 통하여 일반 사용자들도 /et..

[웹 모의해킹 및 시큐어코딩 진단가이드] HTTP프로토콜

* GET 메소드- 데이터 전송용량의 한계(IE에서는 2083자로 제한)로 인해 기본 페이지 및 그림 파일과 같은 간단한 데이터 전송에 사용- 모든 정보가 헤더에 포함형식 GET [request-uri]?query_string HTTP/1.1\r\n Host : [Hostname] 혹은 [IP] \r\n => HTTP Request헤더에 포함될 수 있는 정보들-> GET /index.jsp HTTP/1.1- 데이터 처리방식(HTTP Method), 기본 페이지, 프로토콜 버전 -> user-agent: MSIE 6.0; Windows NT 5.0User-Agent:- 사용자의 웹 브라우저 종류 및 버전 정보- 공격툴인지 아닌지 확인 가능(쉽게 조작이가능하기때문에 신뢰할만하지는 ..

웹/웹 보안 2017.12.07

웹 모의진단 [웹 모의해킹 및 시큐어코딩 진단가이드]

* 웹 모의진단(=웹 모의해킹)- 3가지 방식으로 접근하여 다양한 취약점을 점검 1. 툴 진단- 자동화된 취약점 진단 도구를 이용한 방법- 웹 스캐너라는 툴을 이용- 웹 스캐너는 아래의 2가지 기능을 통해 자동적으로 취약점을 분석URL 수집 - 사전 정의된 태그정보를 통해 사이트 구조를 수집- 사이트의 디렉토리 및 페이지 구조를 파악 취약점 분석 - URL 수집을 통해 확인된 디렉토리 및 페이지에 사전 정의된 패턴을 전송하여 취약점을 판단 2. 모의 진단- 사이트의 메뉴를 추적하면서 로그인 페이지, 게시판 등에서 발생될 수 있는 취약점을 확인하는 방법- 툴 진단에 확인된 취약점을 검증하거나 분석이 불가능한 부분을 점검하는 과정 3. 소스진단- 소스코드를 분석하여 취약점이 발생가능한 위치를 확인하는 기법-..

웹/웹 보안 2017.12.06

[문제 풀이로 배우는 시스템 해킹 테크닉] level10.공유 메모리에 데이터 읽고 쓰기

이번 레벨의 문제를 풀기 전에 공유 메모리라는 것을 먼저 알아야 한다. 공유 메모리란 프로세스간에 공유해서 쓰는 메모리를 말한다. 프로세스는 각자 자신만이 사용할 메모리 공간을 할당해서 사용하기 때문에 다른 프로세스에서 사용하는 메모리 공간은 침범할 수 없도록 설계돼있다.그러나 프로세스 간 서로 데이터를 공유해야 하는 필요성 때문에 IPC라는 기법이 생겨났다. 큰 프로그램은 하나의 프로세스로 모든 사하을 구현하기 힘들기 때문에 여러 개의 프로세스로 기능을 분리해서 만들게 되는데 이렇게 기능을 분리하였기 때문에 서로 다른 프로세스 간에도 데이터를 공유해야 할 필요성이 있다.즉, 공유 메모리는 프로그램을 개발할 때 함수로 각종 기능을 분리하고 함수 간에 인자로 데이터를 전달하는 것과 개념상 비슷하며 프로그램..

[문제 풀이로 배우는 시스템 해킹 테크닉] level9. 버퍼 오버플로우

이번에도 힌트를 열어 확인해보면 /usr/bin/bof의 소스코드를 볼 수 있다.간단하게 해석하면 buf배열에 40바이트 이하의 키보드 입력을 받고 buf2배열에 go가 들어가 있으면 Good Skill이라는 문자열을 출력하고 level10권한 부여 후 배시셸을 실행시키는 코드이다.그런데 여기서 주의해서 봐야 할 점은 buf배열의 크기가 10바이트 라는 것이다.buf배열의 크기는 10바이트인데 fgets()함수로 40바이트 이하의 키보드 입력을 받고 있다. 힌트에서 얻은 소스코드를 bof.c라는 파일로 복사하고 지역 변수가 스택에 배치되는 위치를 알 수 있도록 아래와 같이 밑줄친 소스를 한줄 추가한다. 그리고 실행해보면 buf의 주소는 0xbffff7e0 buf2의 주소는 0xbffff7f0이라고 나온다..

[문제 풀이로 배우는 시스템 해킹 테크닉] level8. 리눅스 패스워드 파일 크랙

힌트를 확인해보면 shadow파일의 용량이 2700이라는 정보를 얻을 수 있다. find 명령으로 용랑이 2700인 파일을 찾아보면 /etc/rc.d/found.txt라는 파일이 눈에 띈다. -size 1b 512바이트 단위의 블록 사이즈 검색(디폴트) -size 10c 10바이트 사이즈 검색 -size 10k 10K바이트 사이즈 검색 -size 10w 10워드 사이즈 검색 /etc/rc.d/found.txt파일의 내용을 확인해보면 /etc/shadow파일의 형식과 동일한 것을 알 수 있다. 이를 john the ripper(로컬 패스워드 크랙용 툴)을 이용하여 크랙한다.참고적으로 hydra라고 하는 원격 패스워드 크랙용 툴도 있다.

[문제 풀이로 배우는 시스템 해킹 테크닉] level7. 암호화의 시작

level7계정으로 접속하여 힌트를 확인해본다. 힌트에서 제시한대로 /bin/level7명령을 실행하면 패스워드를 입력하도록 나온다.일단 모르기 때문에 아무 문자나 입력해본다.(로컬에서 구축한 ftz서버이기 때문에 wrong.txt가 없다고 나온다.)올바르지 않은 패스워드 입니다. 패스워드는 가까운곳에...--_--_- --____- ---_-__ --__-_-위와 같은 내용을 출력 받았다고 치고선 문제를 푼다.-을 1, _을 0으로 하여 2진수를 10진수로 변환한다음 아스키코드를 찾아보면 mate라고 나온다.1101101 1100001 1110100 1100101109 97 116 101m a t e 패스워드로 mate를 입력하면 level8의 패스워드가 나온다.

[문제 풀이로 배우는 시스템 해킹 테크닉] level6. 시스템 인터럽트의 위험성

level6에 로그인하자마자 힌트 화면이 나타난다. 여기서 아무 키나 누르면 아래와 같이 뜬다.1~3번을 입력하면 putty가 종료되는 현상이 나타난다. 다시 접속하여 로그인 후 힌트 화면에서 Ctrl+C을 눌러 프로그램의 흐름을 막아버리면 level6의 셸이 나타난다.여기서 디렉터리에 있는 파일목록을 보면 의심스러운 password라는 파일이 보이므로 내용을 확인해보면 level7의 패스워드를 확인할 수 있다.