안경잡이개발자

728x90
반응형

  해킹 방어 대회(CTF)에서는 다양한 문제들이 가리지 않고 출제됩니다. 이번 시간에는 해킹 방어 대회를 위해 사용할 수 있는 기본적인 소프트웨어 및 프로그래밍 언어에 대해 알아보겠습니다. 사실상 기본적인 도구가 없으면 해킹 자체를 할 수 없는 경우가 많기 때문에 아래에서 언급된 소프트웨어는 필수적으로 설치를 할 수 있으면 좋습니다. 또한 아래 언급되는 대다수의 소프트웨어가 기초적인 프로그래밍 능력이 없으면 활용하기 어렵습니다. 하지만 당장 잘 모르는 소프트웨어라고 하더라도, 필요할 때마다 설치하며 공부하시면 효율적인 학습이 가능합니다.


  어떠한 CTF라도 출제되는 문제 유형에서 요구하는 모든 도구(Tool)를 정확히 파악하기는 매우 어려우며 출제자의 의중을 파악하기도 어렵습니다. 특히 특정 분야에 대한 매우 전문적인 지식을 요구하는 고난이도의 문제가 자주 출제됩니다. 따라서 처음 CTF를 출전할 때 다양한 고충을 겪으시는 것은 당연하니 처음에 너무 모르는 도구가 많다고 하시더라도 겁먹지 말고, 천천히 하나씩 접해보시는 걸 추천합니다.


  ▶ 파이썬(Python) 및 IDE: 파이썬은 해킹을 위한 매우 강력한 기능을 제공합니다. 특히 pwntools와 같은 라이브러리를 활용할 수 있습니다. 프로그래밍 언어는 도구에 불과하다고는 하지만 사실상 오늘날의 CTF는 파이썬을 다루지 못하면 상당한 제약을 느낄 수 있습니다.


  ▶ C/C++/C# 및 Visual Studio: 비주얼 스튜디오 개발 환경에서 C언어 계열을 활용하는 문제는 매우 많이 출제되고 있습니다. 최근 F#까지 간혹 출제되는 추세입니다. 사실상 매우 기본적인 C언어 개발환경이므로 설치가 필수적입니다.


  ▶ 가상 머신(Virtual Machine): 상당수 문제는 리눅스(Linux) 환경이 아니면 접근조차 할 수 없는 경우가 많으므로 다른 운영체제 시스템 환경을 다루기 위해 가상 머신을 사용할 필요가 있습니다.


  ▶ SSH/Netcat: 원격지에 존재하는 서버(Server)에 접속하기 위한 목적으로 사용할 수 있는 유틸리티(Utility)입니다. 일반적으로 CTF 대회 문제 서버에 접속하기 위해 자주 사용됩니다. 또한 이러한 도구는 비단 해킹이 아니라 특정 서버를 관리하기 위한 목적으로 사용됩니다.


  ▶ IDA Debugger: 디버깅(Debugging) 도구 중에서 가장 강력한 소프트웨어 중 하나입니다. 다양한 플러그 인을 직접 개발하거나 사용할 수 있는데, 대표적인 플러그 인으로는 기존 기계어를 C언어 문법과 흡사하게 재구성해서 보여주는 기능을 가진 Hex-Rays가 있습니다.


  ▶ Cygwin/MinGW: 유닉스 계열의 명령어나 기능을 윈도우 운영체제에서 소스코드로부터 컴파일할 수 있도록 해주는 소프트웨어입니다. 물론 이러한 프로그램을 설치한다고 해서 리눅스 전용 바이너리 파일을 실행할 수 있는 것은 아니므로 가상 머신을 따로 설치하는 것이 좋습니다.


  ▶ 와이어샤크(Wireshark): 대표적인 네트워크 패킷(Packet) 분석 소프트웨어입니다. 사실 CTF 뿐만 아니라 네트워크를 통한 대부분의 소프트웨어를 분석하거나 개발할 때 사용할 수 있습니다.


  ▶ 칼리 리눅스(Kali Linux): 침투 테스트 목적으로 가장 인기있는 운영체제(OS)입니다. 기본적으로 해킹에 필요한 대부분의 기능 및 도구가 베이직하게 설치가 되어 있다는 점에서 매우 편리하게 사용 가능합니다. 보안을 시작하는 사람들이 가장 먼저 설치하는 것 중 하나입니다.


  ▶ 반디집: 윈도우 운영체제를 베이스로 사용하는 유저들이 리눅스나 맥(MAC) 개발 환경에서 압축된 다양한 파일을 쉽게 해제할 수 있도록 도와줍니다. 다양한 압축 기능을 사용하기 편리하게 해놓았다는 점에서 활용도가 높습니다.


  ▶ HxD: 바이너리 코드(2진수)보다 가독성이 높아 컴퓨터 분야에서 널리 쓰이는 16진수 형태의 데이터를 헥사 코드라고 말합니다. 특정한 파일이 있을 때 이를 16진수 코드로 분석하고자 할 때 사용할 수 있는 소프트웨어입니다. 이를 활용해 JPG, PNG 등의 이미지 파일 등을 16진수 데이터 형태로 분석할 수도 있으며 적절하게 변경하여 사용할 수 있습니다.


  ▶ Pwn Debugger: 리눅스 환경에서 손쉽게 사용할 수 있는 디버깅 도구입니다. 기본적인 gdb보다 더 가시적이며 동적인 환경에서 


  ▶ 버프 수트(Burp Suite): 웹 취약점 분석 도구 중에서 가장 유명한 도구 중 하나입니다. 자체적인 프록시(Proxy) 기능을 제공하며 다양한 파라미터 변조 및 반복적인 패킷 전송 공격 등 다양한 공격이 가능합니다.


  ▶ 크롬 & EditThisCookie: 크롬(Chrome) 개발자 도구만 잘 이용해도 다양한 웹 취약점 테스트를 별도의 프로그래밍 도구 없이 할 수 있는 시대가 왔습니다. 특히 EditThisCookie와 같은 별도의 확장 프로그램을 잘 활용하시면 매우 편리한 웹 취약점 분석이 가능합니다.


  ▶ 볼라빌리티(Volatility): 파이썬으로 개발된 메모리 분석 및 포렌식 전용 소프트웨어입니다. 기본적으로 칼리 리눅스 운영체제에 포함되어 있는 도구 중 하나입니다.


  ▶ FTK Imager: 포렌식 및 메모리 이미징을 위한 전문 소프트웨어입니다. 다양하고 강력한 부가적인 기능을 제공합니다.


  ▶ dex2jar: 대표적인 안드로이드 어플리케이션 디컴파일러입니다. 이를 활용하면 APK 파일을 뜯어 분석한 뒤에 smali 파일을 수정해 다시 패키징하고, 어플리케이션으로 제작하여 해적판까지 배포할 수 있습니다.


  ▶ jd-gui: 자바(Java)로 개발된 JAR 파일을 손 쉽게 분석할 수 있도록 도와주는 GUI 소프트웨어입니다.


  ▶ PHP/JSP 개발환경: 웹 해킹 문제로 가장 많이 출제되는 PHP 및 JSP 언어에 대한 개발환경을 구축해놓고, 기초적인 프로그래밍까지 할 수 있도록 공부하시면 많은 도움이 됩니다.

728x90
반응형