System Hacking/해커스쿨 F.T.Z Training11 해커스쿨 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. 해커스쿨 F.T.Z Training 3 Training 3에서는 터미널(콘솔)과 네트워크에 관한 명령어와 현재 서버에 어떤 사람들이 접속해 있는지 보고 그 사람들과 대화를 하는 방법을 배운다. 터미널(콘솔) 텔넷을 통해 해커스쿨 서버에 접속한 것을 "터미널을 통해 접속했다."라고 한다. 또한, 직접 컴퓨터에 리눅스를 설치하고, 부팅하여 로그인한 것을 "콘솔을 통해 접속했다."라고 한다. 터미널과 콘솔, 두 용어는 같은 의미이긴 하지만 위와 같은 차이에 따라 구별되어 사용한다. 터미널이란 컴퓨터와 사용자 간의 서로 소통시켜주는 인터페이스라고 할 수 있다. 인터페이스란 텍스트 기반(CLI)과 그래픽 기반(GUI) 두 가지를 기반을 포함하는 용어이지만 리눅스 터미널은 텍스트 기반을 말한다. 터미널은 컴퓨터와 소통하기 위해서 키보드를 사용하는 것을 .. 2020. 2. 1. 해커스쿨 F.T.Z Training 2 Training 2에서는 디렉터리와 디렉터리 간의 이동, 새로운 디렉터리의 형성, 삭제, 파일의 복사, 이동, 삭제 등에 대해 배운다. pwd (Print Working Directory) pwd 는 현재 경로가 출력되는 명령어다. 현재 디렉터리는 /home/trainer2에 있다는 것을 보여준다. 윈도우에서 폴더를 열었을 때 위치를 말하는 것과 같다. cd (Change Directory) cd는 현재 디렉터리를 바꾸는 명령어다. 사용방법 의미 cd .. 한 단계 상위 디렉터리로 이동 cd trainer2 /trainer2 디렉터리로 이동 cd / 최상위 디렉터리로 이동 cd /home/trainer2 /home/trainer2 디렉터리로 이동 cd ~ 자신의 홈 디렉터리로 이동 cd trainer2는.. 2020. 1. 31. 해커스쿨 F.T.Z Training 1 Training 1에서는 프롬프트의 아주 간단한 설명과 명령어 ls, ls 옵션에 대해 배운다. 프롬프트(Prompt) 리눅스에 접속하면 프롬프트란 것이 나타난다. 프롬프트란 [En_Geon@tistory trainer 1]$ 이것을 의미한다. 프롬프트가 나온다는 것은 리눅스 서버에 성공적으로 로그인을 했다는 의미다. [En_Geon@tistory trainer 1]$ 이 프롬프트를 자세히 설명하자면 이렇다. 의미 En_Geon 접속 ID tistory 서버 Trainer 1 현재 위치 프롬프트란 것은 항상 대기상태에서 어떤 명령을 내리기만을 기다린다. 즉, 컴퓨터가 입력을 받아들일 준비가 되어서 기다리고 있다고 알려주는 메시지다. ls (List) ls 명령은 현재 위치를 기준으로 컴퓨터에 설치된 폴더.. 2020. 1. 31. 이전 1 2 다음