개인적으로 좋아하는 맥북 Pwnable 세팅

혼자 보려고 작성한 글이여서 글 쓰는 시간을 줄이기 위해 대충 썼습니다. 양해바랍니다.

 

 

구조

macOS에서 VS CODE를 구동하면

VS CODE에서는 SSH REMOTE를 통해 DOCKER LINUX를 연결 

도커에서 FILE SHARING 기능을 이용해 파일 이동도 자유롭게 가능

거기에 Github Desktop등을 연동한 버전입니다.

 

DOCKER


1. Dockerfile

FROM ubuntu:20.04
WORKDIR /root
ENV LC_CTYPE C.UTF-8
ARG DEBIAN_FRONTEND=noninteractive

RUN dpkg --add-architecture i386

RUN apt update -y
RUN apt install python3-pip python3-dev python3-setuptools python-capstone libssl-dev libffi-dev build-essential libc6-i386 libc6-dbg gcc-multilib make gcc netcat git curl wget gdb vim nano zsh ruby-full -y

RUN apt-get update
RUN apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential
RUN python3 -m pip install --upgrade pip
RUN python3 -m pip install --upgrade pwntools

RUN apt-get install git gdb gcc-multilib build-essential
RUN git clone https://github.com/longld/peda.git ~/peda
RUN git clone https://github.com/scwuaptx/Pwngdb.git
RUN cp ~/Pwngdb/.gdbinit ~/

RUN echo "alias python='python3'" >> .bashrc

RUN mkdir /pwn
WORKDIR /pwn

구글에 떠돌아다니는 도커파일을 사용했다.

유틸리티가 적긴 하지만 필요할 때 까는거로~

 

2. Docker Image build & run + mount

Dockerfile이 있는 디렉토리에서 명령어를 입력합니다.

docekr build . -t {Image Name}:{Image Tag}

저는 나중에 우분투 버전별로 설치하기 위해 docker build. -t pwndock:2004 했습니다.

 

빌드가 끝나면 run 세팅을 해줍니다.

포트는 아래와 같이 설정했습니다.

localhost:4000 -> docker 22

localhost:4001 -> docker 80

 

File Sharing을 원하지 않을 경우

docker run -it -p 4000:22 -p 4001:80 -d --privileged --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --name {Container Name} {Container ID} /bin/sh

그냥 쓰시면 됩니다. 

 

File Sharing을 원할 경우 (MAC 기준 설명)

docker run -it -p 4000:22 -p 4001:80 -d --privileged --volume=/Users/{하위 Directory}:/home --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --name {Container Name} {Container ID} /bin/sh

 

만약 아래에 걸리는 디렉토리 외의 mount를 걸고 싶으시다면 따로 docker 구매가 필요합니다.

3. container ssh open

포트도 잘 열었지만 세팅한 도커에서 ssh 서비스를 작동해야 접근이 됩니다.

그냥 처음부터 Dockerfile 에 넣을걸 그랬습니다..

docker exec 명령어로 들어가도 됩니다. docker desktop을 사용한다면 그냥 여기서 여는게 편합니다.

 

apt-get update
apt-get install net-tools vim openssh-server

apt-get 업데이트 한번 해주고 ssh 서비스 다운로드

 

service ssh start

아래 설정이 필요 없으신 분들은 ssh 서비스를 시작해주시면 됩니다.

 

 

vi /etc/ssh/sshd_config

 

localhost이니 보안 취약점을 감당하고 sshd_config 파일에 PermitRootLogin을 열어줘도 됩니다.

sudoers 같은 파일 수정해주고 닫아주는게 이상적입니다.

adduser 해줘도 됩니다.

adduser {계정명}

해당 명령어로 도커 리눅스에서 계정을 생성

제일 좋은건 본인의 계정명으로 같이 만들면 ssh 접속할 때 사용자명을 생략해도 바로 접근이 가능합니다.

 

kex_exchange_identification: read: connection reset by peer

 

여기까지 진행했는데 ssh 접근에서 위 오류가 발생한다면

 

1. 본인의 로컬 환경

2. Docker 환경

 

2곳의

/etc/hosts

/etc/hosts.allow

 

파일에 127.0.0.1 이 들어가있는지 확인하자 웬만하면 들어갔을거고

거의 일어나지 않을 일입니다. 애초에 Docker에서는 /etc/hosts.allow 파일이 없을겁니다.

 

4. VS Code Remote

VS Code에서 Remote - SSH 설치해줍시다.

5. Github Desktop

그냥 방금 전에 본인이 설정해준 디렉토리로 git clone해서 쓰시면 됩니다.

 

 

 

끝.


만약 본인이 작업하다가 컨테이너를 여러번 날려먹었는데 이미 ssh 키 값이 남아있다면

 

MAC OS

cd .ssh
rm -rf known_hosts
rm -rf known_hosts.old

 

LINUX

ssh-keygen -R {IP}

 

날리는게 제일 깔끔합니다.