본문 바로가기

Security/Wargame24

[문제 풀이로 배우는 시스템 해킹 테크닉] level9. 버퍼 오버플로우 이번에도 힌트를 열어 확인해보면 /usr/bin/bof의 소스코드를 볼 수 있다.간단하게 해석하면 buf배열에 40바이트 이하의 키보드 입력을 받고 buf2배열에 go가 들어가 있으면 Good Skill이라는 문자열을 출력하고 level10권한 부여 후 배시셸을 실행시키는 코드이다.그런데 여기서 주의해서 봐야 할 점은 buf배열의 크기가 10바이트 라는 것이다.buf배열의 크기는 10바이트인데 fgets()함수로 40바이트 이하의 키보드 입력을 받고 있다. 힌트에서 얻은 소스코드를 bof.c라는 파일로 복사하고 지역 변수가 스택에 배치되는 위치를 알 수 있도록 아래와 같이 밑줄친 소스를 한줄 추가한다. 그리고 실행해보면 buf의 주소는 0xbffff7e0 buf2의 주소는 0xbffff7f0이라고 나온다.. 2017. 12. 6.
[문제 풀이로 배우는 시스템 해킹 테크닉] 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라고 하는 원격 패스워드 크랙용 툴도 있다. 2017. 12. 6.
[문제 풀이로 배우는 시스템 해킹 테크닉] level7. 암호화의 시작 level7계정으로 접속하여 힌트를 확인해본다. 힌트에서 제시한대로 /bin/level7명령을 실행하면 패스워드를 입력하도록 나온다.일단 모르기 때문에 아무 문자나 입력해본다.(로컬에서 구축한 ftz서버이기 때문에 wrong.txt가 없다고 나온다.)올바르지 않은 패스워드 입니다. 패스워드는 가까운곳에...--_--_- --____- ---_-__ --__-_-위와 같은 내용을 출력 받았다고 치고선 문제를 푼다.-을 1, _을 0으로 하여 2진수를 10진수로 변환한다음 아스키코드를 찾아보면 mate라고 나온다.1101101 1100001 1110100 1100101109 97 116 101m a t e 패스워드로 mate를 입력하면 level8의 패스워드가 나온다. 2017. 12. 5.
[문제 풀이로 배우는 시스템 해킹 테크닉] level6. 시스템 인터럽트의 위험성 level6에 로그인하자마자 힌트 화면이 나타난다. 여기서 아무 키나 누르면 아래와 같이 뜬다.1~3번을 입력하면 putty가 종료되는 현상이 나타난다. 다시 접속하여 로그인 후 힌트 화면에서 Ctrl+C을 눌러 프로그램의 흐름을 막아버리면 level6의 셸이 나타난다.여기서 디렉터리에 있는 파일목록을 보면 의심스러운 password라는 파일이 보이므로 내용을 확인해보면 level7의 패스워드를 확인할 수 있다. 2017. 12. 4.
[문제 풀이로 배우는 시스템 해킹 테크닉] level5. 레이스 컨디션 * 레이스 컨디션- 다수의 프로세스가 서로 동일한 자원을 할당받기 위해 경쟁하는 상태 -> 레이스 컨디션 취약점이 존재하기 위한 최소한이 조건1. SUID가 걸려 있어야 함(다른 계정의 권한에 접근해야 하므로)2. 임시 파일을 생성해야 함3. 공격자가 임시로 생성되는 파일명을 정확하게 알아야 함 * 진행 흐름1. 공격 프로세스에서 /tmp/lvl6pass.txt파일을 만든다.2. 공격 프로세스에서 /tmp/lvl6pass.txt파일을 원본으로 하는 /tmp/level5.tmp링크파일을 만든다 (/tmp/level5.tmp링크가 취약한 프로세스가 생성하고 삭제하는 파일의 이름임)3. 레이스 컨디션 취약점이 있는 프로세스를 시작한다.4. 취약한 프로세스가 /tmp/level5.tmp파일을 생성하려고 하지만 .. 2017. 12. 4.
[문제 풀이로 배우는 시스템 해킹 테크닉] level4. xinted 백도어 * 로컬 백도어 : 로컬 시스템을 통해 백도어를 이용* 원격 백도어 : 네트워크를 통한 원격으로 백도어를 이용 hint파일을 열어 힌트를 얻어본다. 아래와 같은 힌트를 얻을 수 있다. /etc/xinted.d에 백도어가 있다는 뜻이므로 해당 디렉터리의 내용을 살펴본다.backdoor라는 서비스가 눈에 띈다. backdoor 서비스의 설정을 확인해 본다. 설정 항목별 의미 service finger 서비스의 이름 /etc/services 파일에 있는 서비스명으로 선택하는 것을 권장 disable = no 데몬을 비활성화하지 않음 flags = REUSE 서비스 포트가 사용중인 경우 해당 포트의 재사용을 허가 socket_type = stream TCP/IP프로토콜을 선택 wait = no 이미 서비스가 연.. 2017. 12. 3.
[문제 풀이로 배우는 시스템 해킹 테크닉] level3. system()함수의 위험성 이 문제를 풀기 전에 먼저 알아야 할 것은 dig 이다.dig는 nslookup과 동일하게 도메인의 IP주소를 확인하는 프로그램이다.(기본적으로 유닉스 계열 OS에 탑재돼 있음)dig 사용법은 아래와 같다.dig @서버IP 도메인주소 version.bind chaos 옵션은 DNS서버 버전을 확인할 수 있는 옵션이다.(요즘에는 BIND설정에서 버전 요청에 대해 회신하지 않도록 설정하고 있으므로 취약한 DNS서버가 아니면 BIND버전에 대한 회신이 없다.) 이번에도 hint파일을 열어 힌트를 얻어본다. 그럼 아래와 같은 힌트를 얻을 수 있다.소스코드의 흐름을 보면먼저 "dig @"라는 문자열을 cmd배열에 넣는다."dig @"문자열 뒤에 autodig 명령어 다음에 입력된 문자열을 붙인다."dig @입력받.. 2017. 12. 1.
[문제 풀이로 배우는 시스템 해킹 테크닉] level2 이 문제를 풀기 전에 먼저 알아야 할 것이 있다.바로 vi편집기의 명령어 실행 기능이다.:!명령어 를 입력하면 셸 화면으로 일시적으로 복귀하여 입력한 명령어를 실행한다.:sh 를 입력하면 셸을 실행할 수 있다.참고적으로 !앞에 r옵션을 추가하면 (즉, :r!명령어) 실행한 명령어의 결과값을 vi 편집기의 편집화면에 추가할 수 있다. 이번에도 hint파일을 열어 힌트를 얻어본다. level3의 권한을 일시적으로 얻을 수 있도록 level3계정의 권한에 SUID가 설정돼 있는 파일을 찾는다. 찾은 /usr/bin/editor파일을 실행시켜본다. vi 편집기와 똑같은 화면이 실행된다. level3 계정의 권한으로 vi편집기를 실행하게 되었으므로 my-pass명령을 실행시켜 패스워들을 알아낸다. 2017. 12. 1.
[문제 풀이로 배우는 시스템 해킹 테크닉] level1. 백도어 * 백도어-> 정상적인 아이디와 패스워드를 입력한 후 서버에서 본인이 맞는지 확인하는 과정을 회피하는 접근 경로-> 일반적인 인증을 통과, 원격 접속을 보장하고 plaintext에의 접근을 취득하는 등의 행동을 들키지 않고 행동하는 방법-> 설치된 프로그램의 형태를 취하기도 하고 기존 프로그램또는 하드웨어의 변형일 수도 있음 우선 ls로 디렉터리 안을 살펴보면 hint파일을 발견할 수 있다. hint파일 내용을 확인해 보면 아래와 같이 써져 있다.level2 권한에 setuid가 걸린 파일을 찾는다. 힌트를 확인했으니 find 명령으로 찾아본다.level2 권한이라고 했으니 -user level2 옵션을 주고,setuid가 걸려있다고 했으니 -perm -4000옵션을 준다.2> /dev/null은 표준 .. 2017. 12. 1.