M1/M2 환경에서 Pwnable 환경 구성하기

728x90

대부분의 pwnable, reversing 바이너리들은 x86_64 환경에서 제작되고 실행되는 경우가 많습니다.

 

하지만 M1/M2는 arm64여서 실행이 되지 않는데, 드림핵 보면서 많은 분들이 M1/M2 환경에서 pwnable, reversing 할 때 어떻게 진행해야하는지 모르시거나 환경구축에 애로사항이 있으신거 같아 글로 남겨봅니다.

 

현재 저의 맥북 사양은 M1 pro / 16GB / 512GB / iterm2 입니다.

 

오류/정정사항 있는 경우, 또는 더 좋은 방법이 있는 경우 디스코드 rasser_ 으로 연락주시면 수정하겠습니다.

 

1. 원하는 우분투 버전의 server 이미지를 다운 받습니다. (저는 20.04를 추천합니다)
Desktop 이미지가 아니라 server 이미지를 사용하는 이유는 Desktop은 설치는 되지만 설치 이후 불편할정도로 느리기 때문에(마우스 움직임, 부팅, cli로 전환 등등) server 이미지를 사용합니다.

 

2. 그리고 UTM에서 Create a New Virtual Machine 선택합니다.

https://mac.getutm.app/

 

UTM

Securely run operating systems on your Mac

mac.getutm.app

 

3. Virtualize 와 Emulate 2개가 있는데, Emulate를 선택합니다.(Virtualize를 선택하면 arm64 vm이 설치가 됩니다)

 

4. 우분투를 설치하기 때문에 Linux 선택합니다.

 

5. 사진에 보면 "Download Ubuntu Server for ARM"이 있는데 이 부분은 무시하고, browse를 클릭하여 1번에서 다운로드 받은 ubuntu amd64 server 파일 선택합니다.

 

6. 사양을 세팅합니다. System, Memory는 원하는 사양으로 선택하시면 되는데, 저는 System은 기본, Memory는 4기가를 할당해주고 Storage size는 테스트 용도라 40GB를 할당하였습니다.

 

Storage는 qemu 이미지라 나중에 확장할 수 있지만 cli로 하면 매우 귀찮으니... 호스트에 용량이 넉넉하신분들은 약간 여유롭게 잡는걸 추천드립니다

 

7. shared directory는 그냥 넘어갑니다( 예전에 해봤는데 여러개의 utm 이미지를 만들었을 때 꼬일수도 있어서 설정을 안합니다)

 

8. 그리고 save합니다.

 

9. 그리고 실행전 세팅을 해줍니다.

Edit -> System -> force multicore를 선택해줍니다. 선택해주는 이유는 조금이나마 쾌적하게 사용하기 위함입니다.

 

 

10. 차근차근 따라가면서 ubuntu server를 설치해 줍니다.

 

11. 네트워크, 프록시 미러 전부 손대지말고 그대로 진행합니다.

 

12. 전체 디스크 사용 선택

 

13. 계정설정

 

14. openssh server 설치해줍니다(맨 위의 "Install OpenSSH server"만 선택하고 나머지는 손대지 않고 그대로 진행합니다.)

15. 필요에 따라 필요한 프로그램 설치합니다. 설치 후 재부팅을 해야하는데, 설치 완료한 후 iso 파일을 빼준 후 재부팅을 진행해야 합니다.

 

16. 설치 완료(설치하는데 시간이 좀 걸립니다)

 

17. openssh-server를 설치안하고 ifconfig한 경우 sudo apt install net-tools를 설치합니다.

openssh-server를 설치한 경우 ifconfig으로 주소 확인합니다.

 

18. ssh로 설치한 ubuntu에 접속합니다.

접속할 때마다 입력하기 귀찮으면 쉘 스크립트를 사용하여 접속해도 됩니다.

 

이름.sh로 저장해서 사용하시면 됩니다.

#!/bin/bash

ssh <id>@<ip address>

버전 확인

19. scp를 이용해 호스트 머신 -> utm으로 파일 전송합니다.(혹시 더 좋은 방안 있으시면 의견 주시면 감사하겠습니다)

https://www.freecodecamp.org/korean/news/scp-rinugseu-myeongryeong-weongyeogeseo-rokeolro-ssh-paileul-jeonsonghaneun-bangbeob/

 

SCP 리눅스 명령 - 원격에서 로컬로 SSH 파일을 전송하는 방법

> 컴퓨터나 저장 능력이 있는 어떤 전자 기기로 작업한다면, 여러 방식으로 정보나 파일을 나누고 공유하게 될 것입니다. 자주 공유되는 파일로는 오디오 파일, 이미지, 비디오, PDF나 어떤 형태

www.freecodecamp.org

 

20. x86_64 바이너리 실행을 확인합니다. (사진의 파일은 dreamhack 시스템해킹 문제를 사용하였습니다)

728x90

'Pwnable' 카테고리의 다른 글

ShaktiCTF - Cache 7  (0) 2022.02.27
SSF 2018 FSB  (0) 2021.12.30
Ropasaurusrex  (0) 2021.12.30
SSF 2018 FSB  (0) 2021.10.17
ROPASAURUSREX  (0) 2021.10.17