Post

[RCity] RCity3 Write up

개요

Redraccoon에서 운영하는 RCity라는 워게임에 RCity3에 대한 Write up을 작성했습니다.

해당 공격 기법들을 허가되지 않은 실제 운영 서버에서 시도하는 것은 정보통신망법에 어긋나는 행위입니다.

개념정리

find 명령어는 파일이나 디렉토리를 찾는 검색 명령어이다. 기본 사용법은 다음과같다. find [경로] [옵션] [표현식]. find 명령어에서 사용할 수 있는 옵션은 다음 표와같다.

옵션설명
name [파일명]지정된 이름의 파일을 찾는다.
user [유저명]user소유의 파일을 찾는다.
type [bcdfls]지정된 형식의 파일을 찾는다.
b: 블록파일
c: 문자
d: 디렉토리
f: 파일
l: 링크파일
s: 소캣
size [+/-] 숫자 [bckw]지정된 크기의 파일을 찾는다.
+n: n보다 크다
-n: n보다 작다
n: n이다
b: 512byte
c: byte
k: kilobytes
w: 2byte
mtime [+/-] 숫자+n: n일 전에 수정된 파일을 찾는다.
-n: n일 동안 수정된 파일을 찾는다.
ctime [+/-] 숫자생성 시간을 기준으로 찾는다. 사용법 mtime과 동일
atime [+/-] 숫자엑세스 시간을 기준으로 찾는다. 사용법 mtime과 동일
inum number지정한 아이노드 번호와 파일을 찾는다.
print표준출력으로 검색된 파일명을 출력한다.
exec command {} \;찾은 각 파일에 대해 지정된 명령을 실행한다.
ok command {} \;실행 여부를 사용자에게 사용자에게 확인한 후 명령을 실행한다.
perm 권한권한: 해당 권한에 해당하는 파일을 찾는다.
-권한: 해당 권한을 포함하는 파일을 찾는다.

여기서 특수 권한에 대해 짚고 넘어가겠다. 리눅스에서 특수권한은 SUID(Set User Id), SGID(Set Group Id), Sticky Bit 3가지가 존재한다. SUID가 적용된 파일은 해당 파일을 실행할 때 소유자의 권한으로 실행이 된다. 즉 일반사용자가 해당 파일을 실행하면 소유자의 권한으로 실행이 되는것이다. SGID는 SUID의 group버전이다. Sticky Bit는 소유자만 해당 파일을 삭제할 수 있게한다. 여기서 SGID와 Sticky Bit는 디렉토리에도 설정할 수 있는데 SGID는 디렉토리에 생성된 파일의 그룹이 디렉토리의 그룹과 동일하게 설정되고, Stiky Bit는 해당 디렉토리안에 모든 파일들이 Stiky Bit가 적용된다.

만약 파일들에 해당 특수권한이 설정된다면 ls -l을 할때 첫번째 권한표시 영역에 표시가된다. SUID는 -rws--x--x 이런식으로 소유자의 실행권한부분이 x가 아니라 s로 표시되고, SGUID는 -rwx--s--x 이런식으로 소유그룹의 실행권한 부분이 s로 표시되고, Sticky Bit는 -rwx--x--t 이런식으로 other부분의 실행권한 부분이 t로 표시된다.

다시 돌아와서 find명령에서 -perm옵션은 -4000와 같은 숫자와 함께 쓰이는데 이 숫자들에 알아보겠다.

계속 봐왔던 파일의 권한부분인 -rwxrwxrwx에서 소유자, 그룹, other 3영역으로 다시나눠보겠다. rwx rwx rwx 여기서 r=4, w=2, x=1로 보고 -로 표시가 되있지 않고 존재하는 권한들을 모두 더하면 각각 7, 7, 7이 된다. 이것을 string으로 더해주면 “777”이 된다. 다른 예시로 rwxr-x---라고했을때 이것은 “7”+”5”+”0”으로 “750”이된다. 따라서 해당 파일의 권한을 변경하는 명령어인 chmod를 사용해서 chmod 744 flag.txt라고 했을 때 flag.txt파일은 -rwxr--r--권한으로 변경이된다. 물론 chmod를 할때 해당파일의 소유자 또는 최고 관리자계정인 root만 가능하다.

그렇다면 4000은 뭘까 여기서 뒤에 숫자 3개는 이전 설명했던것과 동일하게 소유자, 소유그룹, other에 해당하는 숫자다. 맨 앞의 숫자는 특수권한에 대한 표시이다. SUID는 4, SGID는 2, Stiky Bit는 1 즉 Stiky bit는 1000와 같은 방식으로 표시가 될것이다.

문제분석

1
2
3
4
5
6
7
이제 당신은 rcity3 유저로서 좀비들과 싸우기 위해 준비가 되었습니다.

rcity3 유저의 홈 디렉토리에는 수많은 디렉토리가 존재합니다. 여기서 중요한 힌트와 정보들을 담고 있는 "<플래그-파일>.txt" 파일을 찾아야 합니다.

주의 깊게 탐색하고, 주변을 살펴보며 힌트를 알아내세요. 플래그 파일은 이름이 눈에 띄지 않을 수도 있으며, 여러 겹의 디렉토리 구조 안에 숨겨져 있을 수 있습니다.

플래그 파일을 찾으면, 그 안에는 좀비들과 싸우는 데 도움이 되는 유용한 정보와 rcity4 유저의 비밀번호가 있을 것입니다.

문제내용을 보면 rcity3 유저의 홈 디렉토리에는 수많은 디렉토리가 존재하고 그 안에 숨겨져있는 .txt 파일을 찾는것이 목표이다.

image

현재 디렉토리의 파일들을 살펴보니 문제에서 나온것처럼 수많은 디렉토리들이 존재하는 것을 확인할 수 있고, 각 디렉토리의 크기또한 동일해 손수 찾기에는 매우 많은 시간이 걸릴 것이다. 따라서 find명령어를 사용해 찾을 것이다. 현재 우리가 flag파일에 대해 알고있는 확실한정보는 .txt파일이라는 것이다. 따라서 find . -name *.txt 이 명령을 사용할 수 있다. 여기서 *은 와일드카드라 불리는데 뒤에는 무조건 .txt로 끝나는데 앞에는 뭐든지 올 수 있다.

image

명령어를 실행해본 결과 운이좋게도 .txt파일이 딱 1개가 나왔고 해당 파일이 flag파일이였다.

This post is licensed under CC BY 4.0 by the author.