본문 바로가기

System Hacking46

해커스쿨 F.T.Z Level 3 level 3 로그인 후 hint를 열어본다. level 3 hint는 C언어 코드가 나온다. C언어 코드가 뭔지는 모르겠지만, 이전 level들과 같은 느낌의 파일이다. 실행시켜봐야 할 것 같다. 실행시켜보았지만 용법에 맞지 않는다고 오류가 실행된다. C언어 코드를 분석할 필요가 있어 보인다. 코드를 분석하기 전에 dig에 대해서 간단히 배워보자. dig dig는 Domain Information Groper의 약자로 DNS로부터 정보를 가져올 수 있는 도구다. 생활코딩에서 DNS의 동작 원리 강좌를 봤을 것이다. 제목은 DNS의 동작 원리였지만 dig의 동작 원리라고도 생각한다. dig가 DNS를 통하여 정보를 가져오기 때문이다. 그래서 강좌에서는 dig의 사용법이나 dig의 문법을 알려주진 않지만,.. 2020. 2. 6.
해커스쿨 F.T.Z Level 2 level 1에서 bash를 입력 후 level 2문제를 풀고 있었다. 아이디를 보고 level 2의 권한을 얻은 줄 알았다. 그러나 권한 문제로 앞으로 나아갈 수가 없었다. chmod를 사용하려 해도 권한에 걸렸고 usermod는 설치되어 있지도 않았다. 그래서 id를 실행시켰더니 UID만 level 2였고 나머지는 level 1에 머물러 있었다. 권한에 걸릴 수밖에 없는 구조에 머물러 있었다. level 1에 머물러 있지 말고 level 2에 로그인하기 바란다. Level 2에 로그인 후 힌트 파일을 열어보고 무엇을 해야 할지 찾아본다. level 1과 비슷할 것 같다는 생각 들었다. level 1에서 level 2의 권한으로 되어 있고 level 1의 그룹 권한으로 실행할 수 있는 파일이 있었던 것.. 2020. 2. 5.
해커스쿨 F.T.Z Level 1 Training이 끝나고 드디어 Hacking Zone에 왔다. Hacking Zone Level 1에 로그인을 해야 한다. 보는 것과 같이 로그인하면 아무것도 나오지 않는다. 뭔가 Training과 같이 뭐라도 나올 것 같았지만, 아무것도 나오지 않아서 당황했다. 무슨 파일이 있는지부터 알아야 할 것 같아서 생각 없이 ls -l을 입력했다. ls -l을 실행해보니 hint라는 파일이 나왔다. level 1의 hint라는 생각에 cat hint를 사용해 내용을 봤다. level 1은 level 2 권한에 SetUID가 걸린 파일을 찾는 문제였다. SetUID는 얼마 전 Training 10에서 배웠던 권한에 대한 것이다. Training 10에서 배운 find를 활용해 찾으려고 했다. find에 대한 설.. 2020. 2. 5.
해커스쿨 F.T.Z Training 10 Training 10에서는 Local 해킹 때 핵심이 되는 SetUID에 대해 배운다. 해킹에는 두 가지가 있다. 하나는 Remote 해킹 다른 하나는 Local 해킹이다. Remote 해킹은 자신이 해킹하고자 하는 서버에 아이디를 가지고 있지 않을 때, 아이디를 얻고자 시도하는 것이다. Local 해킹은 해킹하고자 하는 서버에 일반 계정을 가지고 있을 때, 관리자 권한(root)을 얻고자 시도하는 것이다. Remote 해킹 방법에는 여러 가지 방법이 있다. 무작위로 아이디와 비밀번호를 입력하여 접속하는 방법, 데몬의 취약점을 공략하여 접속하는 방법, 게시판이나 방명록을 이용하여 접속하는 방법 등등 방법은 수십 가지가 넘는다. 지금 우리가 배울 것은 Local 해킹이다. 관리자의 권한을 얻는 이유는 서버.. 2020. 2. 4.
해커스쿨 F.T.Z Training 9 Training 9에서는 리눅스의 권한에 대해 배운다. 권한에 관한 개념은 해킹에서 가장 핵심적인 부분이다. F.T.Z의 Hacking Zone에서도 권한의 개념을 알아야만 문제를 풀 수 있는 문제가 나오기 때문에 집중해서 배워야 한다. 리눅스는 윈도우와는 다르게 한 서버에 여러 사용자가 접속하여 사용하게 된다. 만약 F.T.Z 서버에 개인 아이디를 가지고 있다면 그 개인 계정에 할당된 공간에 필요한 문서들을 올리고 홈페이지도 만드는 등 여러 중요한 파일들을 생성하게 된다. 그러다 보면 남이 봐서는 안 되는 나만의 문서, 프로그램을 올리게 되는 일도 있을 것이다. 이때 중요한 파일 프로그램은 자신만 사용하게 권한(Permission)을 부여할 수 있다. 리눅스를 사용하다 보면 Permission Deni.. 2020. 2. 4.
해커스쿨 F.T.Z Training 8 Training 8에서는 새로운 파일을 만들고 컴파일하고 실행하는 법을 배운다. 위 과정들은 실제로 해킹을 할 때 빠짐없이 사용되는 방법이니 잘 익혀야 한다. 파일을 만드는 두 가지 종류가 있다. 일반 텍스트 파일과 프로그램 소스 파일이다. 일반 텍스트 파일은 말 그대로 글자로만 이루어진 파일이다. 예를 들어 "README.TXT."가 있다. 이런 일반 텍스트 파일은 cat 명령어를 사용하여 내용을 출력한다고 배웠다. 프로그램 소스 파일이란 컴퓨터 언어로 입력한 파일을 말하며 이것 역시 텍스트 파일이긴 하지만 cat을 사용하여 내용을 보는 것이 아니고 "컴파일"이란 과정을 거쳐 실행할 수 있도록 만든 후 사용한다. 텍스트 파일 생성 쉘 프롬프트 상태에서 cat > 파일 이름.txt를 입력한다. 원하는 내.. 2020. 2. 3.
해커스쿨 F.T.Z Training 7 Training 7에서는 리눅스 환경에서 파일들을 압축하고 해제하는 방법을 배운다. 데이터가 손실되는 것을 방지하기 위해 "백업"을 하는 것은 필수이며 이 백업을 할 때 압축 명령어들이 사용된다. 리눅스에서 압축할 때 사용되는 명령어는 "tar", "gzip" 명령어가 있다. "gzip"은 윈도우에서 매일 보는 "winzip"의 할아버지 벌 되는 프로그램이다. tar tar는 압축 프로그램은 아니다. tar로 파일을 압축 했을 때 용량이 줄어들어야 하지만 오히려 용량이 늘어난다. 이 점에서 압축 프로그램이 아니라고 말한다. tar은 파일을 압축하지 않고 그냥 합쳐버리기만 한다. 다시 기존의 파일들을 복구할 때 붙인 파일들을 떼어내기만 하면 되기 때문에 속도가 빠르다. 윈도우에서 압축파일을 풀어본 적이 있.. 2020. 2. 3.
해커스쿨 F.T.Z Training 6 Training 6에서는 패스워드 파일 분석 방법을 배운다. /etc/passwd Training 4에서 /etc/passwd는 사용자들에 대한 간단한 정보가 있다고 배웠다. 패스워드 파일은 한 서버를 사용하는 사용자들이 어떤 아이디 어떤 암호를 이용하여 로그인하는지 어떤 그룹에 속해있는지 이름은 무엇인지 등등 사용자들의 모든 정보를 정장해 놓은 매우 중요한 파일이다. cat /etc/passwd를 입력하면 복잡하게 많이 나온다. 위의 문자열은 7개의 필드로 나뉜다. 필드를 구분해주는 것은 ":" 이 문자를 통해 구분한다. 의미 root 로그인 아이디 x 패스워드가 적혀있는 부분 0 컴퓨터의 숫자 판단 0 그룹 Admin 사용자의 이름 /root 로그인 성공 시 기본 위치 디렉터리 /bin/bash 첫 .. 2020. 2. 3.
해커스쿨 F.T.Z Training 5 '해킹의 첫 단계는 정보수집이다.'라는 말이 있듯이 Training 5에서는 해킹을 시도하는 서버의 정보를 수집하는 방법을 배운다. whoami whoami는 자신이 '누구인지'를 알아보는 명령어다. id id는 whoami보다 더 자세하게 자신의 정보를 알아보는 명령어다. id의 실행 결과 분석은 trainer 9에서 배운다. uname -a uname -a는 서버의 커널 버전을 알아보는 명령어다. 커널은 리눅스의 심장부 역할을 하는 파일로서 커널 버전에 따라 리눅스의 성능도 차이가 난다. 같은 버전의 리눅스라도 커널 버전이 높다면 속도도 더욱 빨라지고 안전성도 높아진다. 해킹 중에는 커널을 이용한 해킹도 많이 하므로 서버에 아이디가 있는 상태에서 정보를 캐낼 때 가장 먼저 하는 것이 커널 버전을 보는.. 2020. 2. 2.
해커스쿨 F.T.Z Training 4 Training 4에서는 최상위 디렉터리에 존재하는 수많은 하위 디렉터리에 대해 배우고, 리눅스에서 중요한 역할을 하는 파일들에 대해 배운다. 최상위 디렉터리 최상위 디렉터리는 루트 디렉터리라고도 부른다. 최상위 디렉터리로 가는 방법은 Training 3에서 배운 "cd /"로 이동한다. 최상위 디렉터리에 어떤 디렉터리가 있고 그 안에는 무엇이 들어있는지 자세히 배운다. bin 가장 필수적인 리눅스 실행 파일들이 들어있는 디렉터리다. ls, rm 등이 있다. boot 리눅스 부팅 관련 파일들과 리눅스의 심장인 커널이 들어있는 디렉터리다. dev 컴퓨터에 설치된 하드웨어에 관한 정보들이 파일 형태로 저장되는 디렉터리다. etc 패스워드 파일, 쉐도우 파일, 그 외 대부분의 리눅스 설정 파일 등등 중요한 파.. 2020. 2. 2.