안경잡이개발자

728x90
반응형

  네트워크 상에서 특정한 컴퓨터와 통신하기 위한 유틸리티(Utility)넷캣(Netcat)을 사용할 수 있습니다. TCP/UDP 프로토콜을 이용하는 환경에서는 범용적으로 적용이 가능하다는 점에서 간단한 네트워크 통신을 위한 목적으로 간단히 사용할 수 있습니다. 줄여서 NC(Network Connection)라고도 부르며 해킹(Hacking)에 있어서도 이용범위가 넓다는 특징이 있습니다. 리눅스 운영체제에서는 Netcat을 사용하기 어렵지 않지만 윈도우(Windows) 운영체제를 사용하는 사람들은 별도의 소프트웨어를 설치해서 사용할 수 있답니다.


  ▶ Netcat 다운로드 사이트: https://eternallybored.org/misc/netcat/



  사이트 접속 이후에는 위와 같이 netcat 1.12 버전을 다운로드하여 윈도우에서 사용할 수 있습니다.



  다운로드 이후에는 압축을 풀어줍니다. 저는 위와 같이 C 드라이브에 압축을 풀어주었습니다.



  이후에 제어판 -> 시스템 -> 고급 시스템 설정 -> '환경 변수'로 들어가서 우리가 방금 다운로드 해 준 Netcat 유틸리티를 커맨드 라인에서 사용할 수 있도록 변수 설정을 해주도록 하겠습니다.



  시스템 변수 -> 'Path'에서 사용할 유틸리티의 경로를 설정해 줄 수 있습니다. 여기에서 새롭게 자신이 압축을 푼 Netcat 폴더의 위치를 넣어주시면 됩니다. 이후에 명령 프롬프트(CMD)에서 Netcat 유틸리티를 사용하실 수 있습니다.


1. 서버 열기 및 접속하기


  서버를 열 때는 nc -l 명령어를 사용합니다. l(Listen)은 단순한 채팅 서버와 같은 역할을 수행합니다. 클라이언트에서 접속할 때는 호스트 주소와 포트 번호를 공백으로 구분하여 이어서 작성하면 됩니다.



  일반적으로 다음과 같이 해킹 문제풀이 서버에 접속하면 서버에서 미리 준비된 메시지를 출력하고, 사용자와 상호작용을 하는 식입니다.



  Netcat은 말 그대로 네트워크 통신 도구이므로 다음과 같이 웹 사이트에 접속할 수도 있습니다. 다음 사진은 제 개인 웹 사이트에 접속하여 요청(Request) 패킷을 Netcat 유틸리티 상에서 전송해 본 것입니다. 서버에서 성공적으로 응답(Response) 패킷이 날아온 것을 알 수 있습니다.



728x90
반응형

Comment +0

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
반응형

Comment +2

  • 연두아빠 2018.08.21 22:14

    gdb도 추가해줘!

  • 처음 이글을 봤을때 뭐이래 많나 생각했는데,
    지금보니 저거 이미 다있고 추가로 툴들 훨씬많이 갖고있네요 ㅋㅋㅋㅋㅋㅋㅋㅋ

728x90
반응형

※ 해킹 방어 대회란? ※


  해킹 방어 대회해킹(Hacking) 실력을 겨루는 대회를 의미합니다. 코드게이트, 데프콘, 시큐인사이드 CTF, 삼성전자 CTF 등 다양한 해킹 방어 대회가 존재하며 다양한 기업 및 기관에서 운영하고 있습니다. 일반적인 해킹 방어 대회 진행 방식은 CTF(Capture The Flag)입니다. 말 그대로 플래그(Flag) 값을 찾으라는 의미를 가지며 대회에 참가할 때는 일반적으로 팀(Team)을 구성하여 참가하는 방식이지만 삼성전자 CTF와 같이 개인전 중심의 CTF도 존재합니다.


  해킹 방어 대회는 기본적으로 특정 시스템에서 존재할 수 있는 취약점을 익스플로잇(Exploit)하거나, 이를 방어(Patch)하거나, 특정 시스템을 직접 타격하지 않고 우회적으로 피해를 입히는 방법에 대해서 물어봅니다. 그렇기 때문에 CTF 대회에서의 다양한 문제들은 특정한 상황이나 시스템에 국한될 수 있습니다. 예를 들어 문제로 PHP 소스코드를 분석해야 하거나, 난데없이 F# 소스코드나 RFID 관련 덤프 데이터가 등장할 수도 있고 솔리디티(Solidity) 등의 블록체인 관련 문제가 출제될 수도 있습니다.


  일반적으로 개발을 공부할 때는 A라는 언어가 별로라고 느껴지면 B라는 언어를 선택해서 개발을 진행할 수도 있고, 시스템 환경도 자신이 원하는 대로 구성할 수 있지만 CTF는 반대로 '한정된' 시스템에 통하는 취약점에 대한 문제를 자주 다룰 수 있기 때문에 CTF에 참여한다는 것은 어찌보면 새로운 시스템 환경에 대한 공부라고 이해할 수 있습니다.


  어떠한 CTF에 출전하든지 간에 매 번 새로운 내용을 공부하게 되고, 그것이 CTF의 매력이 아닐까 생각합니다. :)


  또한 CTF는 알고리즘 분야보다 더 진입장벽이 높은 대회 유형입니다. 처음 공부를 시작해서 어떤 해킹 방어 대회에 '본선'이라도 나가는 것은 매우 어렵습니다. 특히 대부분의 CTF 대회는 내/외국인의 구분이 없으며 나이 제한도 없기 때문에 기존의 고수 분들과 경쟁을 해야 합니다. 반면에 알고리즘 대회는 대학(원)생 한정 대회가 많아서 그나마 진입장벽이 낮습니다.


[ 해킹 방어 대회 종류 ]


  해킹 방어 대회로 가장 유명한 몇 가지만 소개하고자 합니다. 일반적으로 해킹 방어 대회는 보안 컨퍼런스(Conference)와 함께 진행되는 경우가 많습니다. 공부하는 학생으로서 매 대회마다 정말 많은 것을 배울 수 있습니다.


- 코드게이트(Codegate): 과학기술정보통신부 주관하는 해킹 방어 대회입니다.


- HdCon: 일명 흐드콘이라고 불리는 해킹 방어 대회로 KISA에서 주관하는 대회입니다.


- SECUINSIDE: 고려대학교 정보보호대학원 주관의 해킹 방어 대회입니다.


- WITHCON: 화이트햇 콘테스트라고 불리는 대회로 국방부가 주관하는 해킹 방어 대회입니다.


- DEFCON: 데프콘이라고 불리우는 대표적인 해킹 방어 국제 대회입니다. 라스 베거스에서 진행되며 세계 규모 중에서 가장 유명한 해킹 방어 대회 중 하나입니다.


- SCTF: 삼성전자가 주관하는 해킹 방어 대회로 거의 유일하게 개인전으로 운영되고 있습니다. 또한 단순 공격 위주의 문제가 아니라 방어 및 코딩(Coding)을 활용한 문제가 출제됩니다.


※ 해킹 방어 대회를 준비하는 방법 ※


  해킹 방어 대회 준비를 위해서는 기초적인 프로그래밍 능력을 갖추시는 것이 중요합니다. C, Java, Python 및 웹(Web)에 대한 공부를 하시는 것이 좋습니다. 특히 간단히 게시판 정도는 만들 정도까지 웹에 대해 공부하시고, C에 대해 공부하실 때에도 단순히 프로그래밍만 공부하시지 말고 보안과 관련한 내용을 편식하지 말고 먹는 것이 좋습니다.


  기본적인 프로그래밍 능력이 갖추어지셨다면 다양한 워게임(Wargame) 사이트에서 CTF 문제를 풀어보시는 것이 좋습니다. 프로그래밍 공부를 하다가 지겨울 때는 잠깐 CTF 문제를 풀러 왔다가 다시 프로그래밍 공부를 하러 가는 방식으로 서로 균형적으로 공부해나가시는 것도 좋은 방법입니다. 무엇보다 꾸준히 문제를 풀어보는게 정말 좋은 습관인 것 같습니다.


[ 다양한 문제풀이 사이트 ]


1. wechall.net: 세계적으로 다양한 해킹 실습환경을 모두 모아둔 웹 사이트입니다.


2. webhacking.kr: PHP 기반의 웹 해킹에 대한 내용을 중심으로 다루고 있는 웹 사이트입니다. 기초적인 웹 해킹 기술부터 네트워크 관련 지식까지 문제를 풀면서 얻을 수 있습니다.


3. pwnable.kr: 시스템 해킹(System Hacking)에 관한 내용을 중점적으로 다루는 웹 사이트입니다. 실제 최근 CTF에서 출제되는 문제들과 흡사한 부분이 많으며 문제의 퀄리티가 높다는 특징이 있습니다.


4. suninatas.com: 웹 해킹, 시스템 해킹 등 다양한 분야를 다루면서도 난이도를 쉽게 구성하여 초보자가 입문하기에 적합한 해킹 공부 사이트입니다.


5. pythonchallenge.com: 해킹 문제는 파이썬(Python)으로 풀게 되는 경우가 많아 파이썬 문법을 빠르게 익히기에 좋고, 문제를 풀어가며 재미있게 공부할 수 있는 웹 사이트입니다.


※ 기타 대외 활동 ※


1. 차세대 보안리더 양성 프로그램(Best of the Best): 과학기술정보통신부 주관으로 정부에서 주관하는 보안 인력 양성 프로젝트입니다. 매 년 100명 가량의 연수생을 뽑아서 교육시키며 150만 원 가량의 노트북을 지원해주고 매 달 수십만 원의 학습 지원금도 주는 좋은 교육 프로그램입니다. 저도 2017년에 BoB에서 많은 것을 배웠습니다.


2. 해킹 팀(Hacking Team) 구성하기: 본격적으로 해킹에 대해 공부하고 싶으시다면 기초적인 프로그래밍 언어 공부를 먼저 해보시고, 다양한 CTF 문제를 풀어보면서 실력을 키워나가신 뒤에 해킹 팀에 구성원으로 들어가거나 친구끼리 스터디를 구성하는 것을 추천합니다. 컴퓨터는 분야를 막론하고 선의의 경쟁자가 많을수록 실력 향상에 도움이 됩니다.

728x90
반응형

Comment +2