[FTZ] training10

드디어 마지막 트레이닝입니다. 이번에는 로컬 해킹시 핵심인 SetUID에 대해 알아봅니다.

해킹에는 Remote 해킹과 Local 해킹 두 가지가 있습니다. Remote 해킹은 자신이 해킹하고자 하는 서버에 아이디를 가지고 있지 않을 때, 아이디를 얻으려 시도하는 것입니다. 다른 하나는 Local 해킹입니다. 이것은 해킹하고자 하는 서버에 일반 계정을 가지고 있을 때, 관리자 권한(root)을 얻으려 시도하는 것입니다.

Remote 해킹 방법엔 무작위로 아이디와 비밀번호를 입력해 접속하는 방법부터 데몬 취약점을 공략하는 방법, 게시판과 방명록을 이용해 접속하는 방법 등 수많은 방법이 있다고 합니다.

하지만 루트 권한을 얻는 과정이 가장 중요하기 때문에 Local 해킹이 중요합니다.

자세히 보기

[FTZ] training9

드디어 이전부터 계속해서 얘기했던 리눅스의 권한에 대해 작성합니다. 권한에 대한 개념은 해킹에서 가장 핵심적인 부분이고 FTZ 워게임에서도 이 개념을 알아야만 문제를 해결할 수 있습니다.

권한permission

리눅스는 윈도우와 달리 한 서버에 여러 사용자가 접속하여 사용합니다. 사용자가 어떤 서버에 아이디를 갖고 있다면, 그 계정이 할당된 공간에 홈페이지를 만들거나, 파일을 업로드, 생성하는 등 여러 작업들을 할 수 있습니다. 이 때, 다른 사용자가 이 사용자의 파일에 접근하지 못 하도록 막을 수 있는 개념이 권한(Permission)입니다.

만약 권한이 없는 파일에 접근하려한다면 Permission Denied라는 에러메시지가 출력됩니다. 이처럼 리눅스는 각 사용자마다 특별한 권한을 부여하여, 그 권한의 범위를 넘어서지 않는 파일들만 제어할 수 있도록 설정되어 있습니다.

자세히 보기

[FTZ] training8

이번에는 새로운 파일을 생성하고, 소스코드를 만들어 컴파일하고 실행하는 방법을 설명합니다.

파일의 종류는 두 가지가 있습니다. 먼저, 일반 텍스트 파일입니다. 이것은 윈도우에서 우리가 메모장으로 생성한 .txt의 파일이나 training을 하며 cat명령으로 내용을 출력했던 파일들입니다. 다른 하나는 프로그램 소스파일입니다. 소스파일 역시 텍스트 파일이지만 보통 이 파일은 컴파일과정을 거쳐 실행 가능하도록 만든 후 사용합니다.

텍스트 파일 생성 방법

  1. 프롬프트에서 cat > [파일이름.txt] 명령을 입력합니다.
  2. 파일의 내용을 입력합니다.
  3. crtl + D를 눌러 입력을 멈춥니다.

위의 과정에서 알 수 있듯, 지금까지 파일이 내용을 보기 위해 사용했던 cat 명령이 파일 쓰기에도 사용됐다는 것을 알 수 있습니다. >문자의 의미는 방향전환redirection 입니다.
방향전환을 한다는 의미를 살펴봅시다. 원래 cat명령은 모니터에 명령수행 결과를 출력합니다. 하지만 방향전환을 함으로서, 모니터가 아닌 [파일이름.txt]에 입력결과를 보냅니다. 즉, 출력의 방향을 전환한 것입니다.

자세히 보기

[FTZ] training7

이번에는 리눅스에서 파일들을 압축, 해제하는 방법을 포스팅합니다.

tar 명령어 사용법

tar 명령어는 파일들을 압축하지 않고, 합치는 명령어입니다. 파일을 압축하지 않기 때문에, 합친 파일을 해제할 때, 속도가 빨라서 백업용 프로그램으로 많이 쓰입니다.

  • 파일 합치기: tar -cvf [합칠파일] [합칠파일들]
  • 해제하기: tar -xvf [해제할 파일]
  • 옵션
    • c: create, 새로운 파일 만들기
    • x: extract, 해제하기
    • v: view, 압축하거나 푸는 과정을 출력하기
    • f: 파일로 백업하기

그런데 tar -cvf 명령으로 파일들을 압축하고 결과를 살펴보면 용량이 더 불어난 것을 확인할 수 있습니다. 따라서 일반적으로 gzip이라는 명령과 tar명령을 같이 사용해서 실제 압축을 진행합니다.

자세히 보기

[FTZ] training6

지난 포스팅에서도 언급했듯 이번 포스팅에서는 /etc/passwd 파일을 분석하겠습니다.

/etc/passwd

passwd 파일의 역할은 training4에서 간단하게 살펴봤습니다. 서버를 사용하는 사용자들의 정보를 간단히 기록해두는 파일이라고 했었죠. 이제 passwd파일을 분석하기 위해 프롬프트에 cat /etc/passwd를 입력합니다.

자세히 보기

[FTZ] training5

training5에서는 해킹에서 가장 중요한 것을 언급하며 시작합니다. 해킹에서 가장 중요한 것은 ‘정보’라고 하는군요. 이번 포스팅에서는 해킹을 시도하려는 서버 정보를 수집하는 방법을 작성하겠습니다.

whoami

자신의 정보를 수집하는 명령어입니다. 프롬프트에 whoami명령어를 입력하면 trainer5라며 자신의 접속 ID가 출력됩니다.

1
2
[trainer5@ftz trainer5]$ whoami
trainer5
자세히 보기

[FTZ] training4

이번 training에서는 최상위 디렉토리에 존재하는 하위 디렉토리들을 공부하고, 리눅스에서 중요한 역할을 하는 파일들을 살펴보겠습니다.

루트 디렉토리

루트 디렉토리로 이동 후, ls -l명령을 입력하면 다음과 같이 출력됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[trainer4@ftz /]$ ls -al
total 68
drwxr-xr-x 19 root root 1024 10월 3 11:47 .
drwxr-xr-x 19 root root 1024 10월 3 11:47 ..
drwxr-xr-x 2 root root 2048 10월 1 22:01 bin
drwxr-xr-x 2 root root 1024 10월 2 11:27 boot
drwxr-xr-x 5 root root 34816 10월 2 11:28 dev
drwxr-xr-x 23 root root 2048 10월 5 14:43 etc
drwxr-xr-x 24 root root 1024 10월 2 02:56 home
drwxr-xr-x 4 root root 3072 10월 1 21:59 lib
drwxr-xr-x 6 root root 1024 10월 2 02:52 mnt
dr-xr-xr-x 55 root root 0 10월 2 11:27 proc
drwxr-x--- 5 root root 1024 10월 4 12:03 root
drwxr-xr-x 3 root root 2048 10월 2 02:52 sbin
drwxrwxrwt 5 root root 1024 10월 5 15:57 tmp
drwxr-xr-x 19 root root 1024 10월 1 21:56 usr
drwxr-xr-x 14 root root 1024 10월 1 22:02 var

이제 이 디렉토리들을 하나씩 설명하겠습니다.

자세히 보기

[FTZ] training3

training3에서는 터미널, 콘솔과 네트워크에 관한 명령들을 다룹니다.

터미널과 콘솔

텔넷 혹은 SSH를 통해 서버에 접속하는 것을 터미널을 통해 접속했다라고 합니다. 만약 컴퓨터에 리눅스를 설치하고, 부팅하여 로그인하면 콘솔을 통해 접속했다라고 합니다.

w 명령어

w명령어는 현재 접속해 있는 서버에 어떤 사람들이 접속해 있는지 확인할 수 있습니다. 우리는 로컬 서버를 구축해서 진행하고 있기 때문에 root 사용자와 SSH로 접속한 유저명밖에 출력되지 않습니다.

자세히 보기

[FTZ] training2

training2에서는 디렉토리와 디렉토리 간 이동, 디렉토리 생성, 삭제, 복사, 이동 등 디렉토리와 관련된 내용들을 다룹니다.

pwd 명령어

프롬프트에 pwd명령을 입력하면 자신이 현재 위치한 디렉토리 경로를 확인할 수 있습니다. training1에서 배웠듯이, 현재 프롬프트의 가장 오른쪽 부분은 사용자의 현재 디렉토리입니다. 두 개의 차이점은 pwd명령어의 결과는 경로이고, training1에서 배운 부분은 자신의 현재 디렉토리만 출력된다는 것입니다.

cd 명령어

training2에서 pwd명령을 입력하면 다음과 같은 결과를 확인할 수 있습니다.

자세히 보기

[FTZ] training1

FTZ training 관련 글들을 해당 내용을 정리하는 형식을 업로드할 예정입니다.

접속

과거에는 해커스쿨에서 제공하는 FTZ 서비스는 원래 두 가지 접속 방법이 존재했습니다. 해커스쿨의 FTZ 서버에 텔넷으로 접속하거나 FTZ.iso 파일과 가상머신을 이용해 로컬 서버를 돌려 접속할 수 있었습니다. 하지만 해커스쿨에서 FTZ 서비스를 제공하지 않게 된 이후로는 로컬 서버를 구축해 접속하는 방법밖에 없습니다.

XShell 혹은 Putty를 이용해 지난 시간에 구축한 로컬 서버의 IP로 접속합니다. 이후 로그인 창이 뜨면 아이디와 비밀번호를 입력하여 로그인 할 수 있습니다.

자세히 보기