Docker 파일을 분석하는 문제이다. 문제 파일을 다운로드 받으면, 아래와 같은 내용을 확인할 수 있다.
FROM ubuntu:22.04@sha256:27cb6e6ccef575a4698b66f5de06c7ecd61589132d5a91d098f7f3f9285415a9
ENV user chall
ENV chall_port 31337
RUN apt-get update
RUN apt-get install -y python3
RUN adduser $user
COPY ./deploy/flag /home/$user/flag
RUN chown -R root:$user /home/$user
WORKDIR /home/chall
RUN touch `python3 -c "print(open('./flag', 'r').read())"`
RUN rm *
WORKDIR /home
USER $user
EXPOSE $chall_port
눈여겨 볼 점은, /home/chall 디렉터리에서 flag 파일을 열어서 그 뒤에 해당 디렉터리의 모든 파일을 삭제한다는 것이다.
WORKDIR /home/chall
RUN touch `python3 -c "print(open('./flag', 'r').read())"`
RUN rm *
따라서, Docker 파일을 실행하는 과정을 살펴볼 수 있는 Debugger가 없다면 풀기가 쉽지 않을 것이다.
문제에서는 특정 github repository를 Hint로 제공하고 있는데, 해당 repository에서는 'dive' 라는 이름의 Docker 분석 도구를 다운로드 받을 수 있다. Dive를 설치하는 과정은 아래와 같다.
sudo snap install dive
https://github.com/wagoodman/dive
GitHub - wagoodman/dive: A tool for exploring each layer in a docker image
A tool for exploring each layer in a docker image. Contribute to wagoodman/dive development by creating an account on GitHub.
github.com
dive를 다운로드 받은 뒤, dreamhackofficial docker hub에서 제공하고 있는 blue whale 이미지를 pull 받아오자.
docker pull dreamhackofficial/blue-whle:1
dive 도구는 아래와 같이 사용할 수 있다. dive {docker image id}
dive 도구 실행 결과
좌측 상단의 Layers 탭에서는 분석 대상 Dockerfile에서 작성되어 있는 명령어 한줄씩 순차적으로 내려가며 분석할 수 있으며, 우측의 Current Layer Contents 탭에서는 모든 Layer 및 해당하는 Layer에서 사용된 모든 Contents가 출력되는데, 이를 통해 삭제 되지 전의 flag 파일을 찾아, 분석할 수 있다.
Tab을 사용하여 각 페이지로 이동할 수 있으며, 찾아야할 부분은 blue-whale 이미지가 실행될 때 /home/chall 디렉터리로 이동한 뒤, python을 사용하여 flag 파일을 읽어오는 부분이다.
디렉터리 기준, home 디렉터리를 찾아 해당 디렉터리 안에 있던 flag 파일의 내용을 확인할 수 있었다.
'Security > Wargame & CTF' 카테고리의 다른 글
[CodeEngn] Malware L08 (0) | 2024.05.07 |
---|---|
[CodeEngn | DreamHack] Malware L07(악성코드 Flow 분석) 풀이 (0) | 2024.05.07 |
[DreamHack] rev-basic-0 풀이 (0) | 2024.04.24 |
[Dreamhack] mongoboard 풀이 (0) | 2024.04.23 |