기타

CGC?

nopdata 2016. 7. 28. 16:40

# CGC?

CGC는 Cyber Grand Challenge의 약자로 15년 데프콘에서 부대 행사로 미국 국방성 고등연구계획국(DARPA;Defense Advanced Resaerch Projects Agency)이 개최한 인공지능끼리의 CTF이다.

< DARPA 트위터 >

뭐 그렇다고 한다.


# CGC File?

최근 많은 대회에서 문제의 형식으로 나왔던 파일 형태이다.

CGC 파일 형식은 elf와 비슷한 형태를 취하고 있으나 일반 유닉스에서는 실행이 불가능하며 실행가능한 환경이 있어야 한다.

cgc를 실행할 수 있는 환경을 만들려면 다음과 같이 하면 된다.

1. vagrant 설치

2. virtual box 설치

3. cgc 실행가능 환경 vagrantfile 다운

4. 가상환경 생성

5. 실행


1. vagrant 설치


< vagrant 다운로드 페이지 >

https://www.vagrantup.com/downloads.html에서 vagrant를 다운받는다. vagrant는 간편한 가상환경 관리 프로그램이다.

위 사이트에서 현 OS에 해당하는 vagrant를 다운받으면 된다.


2. virtual box 설치

virtual box 설치의 설명은 생략한다. 굳이 설치하지 않아도 vagrant 구동시 자동으로 설치해 주기 때문


3. cgc 실행가능 환경 vagrantfile 다운

vagrantfile은 vagrant을 통해 생성되는 가상환경의 세부설정이 저장되어있는 파일이다. 여기서 만들고자 하는 가상환경의 목표가 cgc를 실행 하기 위함이므로 cgc 실행이 가능하도록 세부설정이 되어있는 vagrantfile이 필요하다. 이는

http://repo.cybergrandchallenge.com/boxes/ 에서 받을 수 있다.

다운받은 vagrantfile은 vagrant가 설치된 C:\HashiCorp\Vagrant\bin에 놓으면 된다.


4. 가상환경 생성


< vagrant up >

세부 설정파일도 다운받았으므로 이제 'vagrant up'명령을 주어 가상환경을 생성한다. 세부설정 파일(vagrantfile)이 있으므로 다른 옵션을 걸어줄 필요는 없다. 자동으로 가상환경이 생성된다.


5. 실행

vagrant를 통해 생성된 가상환경은 자동으로 virtual box 목록에 추가된다. 이제 사용하면 된다.

파일전송은 공유 폴더를 이용해도 되지만 ssh를 이용하여 전송하였다. ssh는 기본으로 2222포트를 통해 접속할 수 있다.

계정의 기본 id, passwd는 vagrant이다.

< 실행 화면 >

cgc 가상환경이 구성되었으므로 이 가상환경에 cgc파일을 올려놓고 실행을 하면 된다.


# virtual box를 꼭 써야하나?

사실 vagrant자체는 virtual box 뿐만 아니라, Hyper-V, Docker도 지원을 하고 VMware도 --provider 옵션을 이용하여 사용할 수 있다. 하지만 여기에서 사용된 세부설정 파일(vagrantfile)의 대상이 virtual box로 되어 있어서 가상환경 생성은 virtual box로 해야 한다.


< vagrant - providers >


하지만 이미 vmware가 깔려있는데 굳이 또 virtual box를 깔고 싶지 않을 수도 있다. 이 경우에는 virtualbox에서 가상환경을 vmware에서 사용할 수 있도록 하여 배포를 해 주면 된다.


< vagrant export >

'파일 - 가상 시스템 내보내기' 옵션을 이용하여 생성된 cgc 가상환경 중 하나를 선택하여 export를 하면 .ova확장자를 가진 파일이 생성된다. 이 파일을 vmware에서 사용하면 된다.



< import .ova in vmware >

vmware에서 .ova파일을 열면 importing 과정이 진행되고


< cgc system in vmware >

vmware에서 cgc환경을 사용할 수 있다.

아래 URL은 cgc환경을 ova로 만든 파일

https://drive.google.com/open?id=0B6lV2Hp6i-cJd3pmQ0FPWkM5YjA


+++

cgc 가상환경을 만들었다고 하더라도 cgc라이브러리가 없으므로 gdb에서 그냥 열면 라이브러리가 없다고 뜰것이다.

제대로 디버깅을 하기 위해서는 cgc 라이브러리를 추가해 주면 된다. (https://github.com/CyberGrandChallenge/libcgcef)

ida를 이용할 경우에도 cgc파일을 그대로 넣게 되면 binary파일로 인식을 한다. 위에서 말했듯이 elf와 비슷한 형태를 취하고 있고 또 cgc파일을 elf로 변환해주는 cgc2elf를 제공해 준다. cgc파일을 elf로 변환해 주면 ida에서도 읽어 사용할 수 있다.

(https://github.com/CyberGrandChallenge/cgc2elf)



ref

http://argosarch.tistory.com/48

http://bcho.tistory.com/806

http://www.dt.co.kr/contents.html?article_no=2016022402102251607001




'기타' 카테고리의 다른 글

리브레 스킨 적용시 로그인 오류  (0) 2016.08.26
CGC on Ubuntu  (0) 2016.08.24
Mail Encoding & UTF-8 <-> Unicode 변환  (0) 2016.07.21
Google Map API 사용(Static)  (0) 2016.07.21
ntfs-mft  (0) 2016.05.02