Blog Posts

SSL Strip 공격과 HSTS Bypassing

FG0LEHk

  MITM (Man-In-The-Middle) 공격은 공격자와 Victim이 동일한 네트워크에 연결되어 있어야 한다. 따라서 외부에서 공격하는 Remote Exploit Attack에 비해 “덜 흥미로운-less interesting”것으로 간주되곤 한다. 그러나 동일 네트워크라는 제약조건에도 불구하고 MITM 공격이 여전히 이슈가 되는 이유는, Victim  네트워크에 접근했을 때, 다음 단계 해킹을 위한 강력한 무기로 활용할 수 있기 때문이다. 일반적으로 SSL과 같이 전송 구간 암호화가 적용되어 있으면 MITM이 불가능하다고 여기기 쉬우나, 다양한 기법을 통해 통신 내용을 중간에 가로채는 것이 (혹은 변조하는 것이) 가능하다. 이번 포스팅에서는 SSL 을 우회하여 MITM 공격하는 방법을 상세하게 다룰 예정이며, 목차는 다음과 같다. SSL-Strip 기법의 기본 이론과 동작 원리 SSL-Strip 방어기법 (HSTS)과 우회 방법 HSTS Bypass 공격을 통한 계정 탈취 실습   SSL Strip 기본 이론과 동작 원리 Client-Server간 암호화 통신을 위해 SSL이 적용된 경우에는 공격자가 중간에서 통신을 가로채더라도 그 내용을 해독할 수 없기 때문에 MITM 공격이 불가능하다. 그러나 최초 서버와의 세션 연결시 HTTPS를 강제로 HTTP 통신을 하게끔 만들수만 있다면, 일반적인 MITM 공격으로 트래픽 내용을 훔쳐볼 수 있다. 이것을 SSL Strip 기법이며, 말 그대로 “SSL을 벗겨내서(Strip)” 강제로 HTTP통신을 하게끔 유도하는 기법이다. SSL Strip 공격은 2009년 BlackHat DC 컨퍼런스에서 Moxie Marlinspike에 의해 처음 소개되었다. (소개 자료는 http://www.thoughtcrime.org/software/sslstrip/) 아래 그림을 통해 SSL Strip 공격 흐름을 이해해보자. Victim(A) 이 가상의 은행 사이트 www.foobarbank.com 에 접속을 요청한다. 은행 서버(C)는 Victim에게 HTTPS를

Continue Reading

2015년 보안 관련 컨퍼런스 영상 모음

블랙햇, 데프콘 등 해외에서는 한 해(Year)에도 수십건의 보안 관련 컨퍼런스를 통해 보안 기술에 대한 정보들이 공유되고 있다. 그러나 현실적인 여건상 매번 해외 현지에 직접 가서 컨퍼런스 참석을 하기는 힘들 뿐더러 참석하더라도 세션이 분리되어 있는 경우 모든 PT를 듣는것은 현실적으로 불가능하다. 참으로 다행인것은 대부분의 컨퍼런스에서 영상작업을 하고 있고 유튜브나 Vimeo와 같은 채널을 통해 공개되고 있어 (물론 즉시 공개되는건 아님) 전세계 어디에서든 PT를 볼 수 있게 되었다. 아래는 2015년 전 세계에서 열린 보안 관련 컨퍼런스의 영상을 모아놓은 것으로써 우연히 Github (https://github.com/PaulSec/awesome-sec-talks) 에서 찾은 보석같은 자료이다 🙂 사실 컨퍼런스 발표자들이 겹치거나 주제가 일부 중복되는 경우도 보이긴 하는데 매년 보안 필드에서 이슈가 되는 (주목을 받는) 것들이 있다보니 생기는 자연스러운 현상이라 본다. 개인적으로 Best를 꼽으라면 USENIX 와 44CON 자료를 선택하고 싶다. 그럼 보안 컨퍼런스의 세계로 GoGo~!! Conference Location Date Chaos Communication Congress 2015 (32C3) Hamburg, Germany Dec 27-30, 2015 No Con Name 2015 [Spanish] Barcelona, Spain Dec 12, 2015 Passwords 2015 Cambridge, UK Dec 7-9, 2015 DefCamp 2015 Bucharest, Romania Nov 19-20, 2015 BSides Winnipeg 2015 Winnipeg, Canada Nov 14-15, 2015 BSides Charleston 2015 Charleston, SC, USA Nov 14, 2015 BSides Toronto 2015 Toronto, Canada Nov. 7, 2015 Saint Con 2015 Ogden, UT, USA Oct 27-30, 2015 BruCon 2015 Brussels, Belgium Oct 26, 2015 SkyDogCon

Continue Reading

공짜로 프로그래밍 공부하기 : E-Book 모음

Prog-languages

간만에 쓰게 되는 블로그 포스팅이라 가벼운 주제를 써볼까 한다. 최근 페이스북에 최연소 입사자에 대한 인터뷰가 화제가 된 적이 있었다. 17세의 나이로 페이스북에 입사한 이 친구는 순수히 인터넷 “검색”과 공짜 프로그래밍 강의 사이트를 통해 프로그래밍을 배웠다고 한다. (물론 어린나이에 말랑말랑한 브레인도 한 몫 했을거라 생각됨 ㅎㅎ) 많이 알려져있다 시피 미국의 경우 프로그래밍의 중요성과 실효성에 대해 레전드급 인물(빌 게이츠, 마크 주커버그 등)들이 직접 나서서 홍보하고 있으며, 코드 아카데미, 칸 아카데미와 같은 사이트를 이용하면, 기본적인 프로그래밍 기술을 습득할 수 있다. https://www.codecademy.com  / https://www.khanacademy.org/computing/computer-programming 국내의 경우 “egoing – 이고잉” 님께서 운영하시는 [생활코딩 – Opentutorial] 사이트를 이용하면 한글과 유튜브 강좌를 통해 C/Java/Python과 같은 언어를 배울 수 있다.   그러나 강의 자료의 경우 정해진 커리큘럼을 따라가야 하는데 이런 부분이 좀 지루하게 느껴질 수 있고, 나의 경우 업무 때 사용하는 언어가 뒤죽박죽이다보니, 해당 언어에 관련된 책을 매번 사보기도 부담스럽다.   그러던 와중에 오늘 인터넷에서 어떤 용자가 깃허브에 공유한 Free-Programming-Books 를 우연히 보게 되었는데 내용이 정말 대박중에 대박이 아닐 수 없다. 이제는 정말 “자료가 없어서 공부 못하겠다” 는 이야기는 해서는 안되는 시대인 듯… 각각의 자료를 작성해준 전 세계의 모든 용자들에게 감사하며 아래 링크로 들어가서 신나게 E-Book을 다운받아 보자. https://github.com/vhf/free-programming-books/blob/master/free-programming-books.md

Continue Reading

파이썬 requests 라이브러리를 활용한 웹 취약점 점검

python

웹 취약점 점검에 Burp-Suite와 같은 상용(혹은 free) Proxy 도구를 많이 사용하긴 하지만 특정 영역에서 취약점을 발견했을 경우 상용 도구에서 제공되는 부가기능(Intruder 등)을 쓰기 보다는 Python을 통해 직접 도구를 제작하는 것이 효율적일 때가 있다. 파이썬에서 http 통신을 위해 가장 기본적으로 사용되는 라이브러리에는 socket, urllib(2) 등이 있지만 아래 소개할 requests 를 사용하면 아주 간편하고 빠르게 공격 도구를 제작할 수 있다. 본 포스팅 내용은 아래 공식 페이지 내용을 참고하여 작성하였음을 미리 밝힌다. http://docs.python-requests.org/en/latest/   설치 방법 pip 혹은 easy_install 도구를 통해 간편하게 설치가 가능하며, git 을 통한 수동 설치도 지원한다. [crayon-57bea593bb28d687619665/] 설치가 끝나면 정상적으로 라이브러리가 import 가 되는지 파이썬을 열어 확인해보자 [crayon-57bea593bb29c288299527/] 오류 없이 정상적으로 설치 된 것을 확인할 수 있다. 이제 본격적으로 requests 라이브러리를 활용해보도록 하자.   GET / POST 요청(request)과 응답(response) 받기 라이브러리를 불러오는(Importing) 것은 다음 한 줄이면 충분하다. [crayon-57bea593bb2a6745979220/] 공격 대상 웹 서비스가 GET 메서드를 지원하는 경우 다음과 같이 Request를 생성한다. [crayon-57bea593bb2af699345329/] url을 별도로 분리해 놓은 것은 추후에 코딩시에 유연성을 높이기 위해서이며, 직접 get(‘대상주소’) 형식으로 입력해도 무방하다. 위와 같이 get 메서드를 호출하게 되면 응답 값에 대한 객체가 “r” 에 부여되며, 앞으로도 이 객체를 사용하여 url 에 관련된 정보를 수집할 수 있다. GET 이 아닌 POST 방식의 경우 다음과 같이 파라미터를 딕셔너리 형태로 정의한 후 post 메서드 호출 시 인자값으로 전달하면 된다.

Continue Reading

리눅스 시스템 프로그래밍 [2] : 파일 입출력

이번 장에서는 리눅스 시스템 프로그래밍에 있어 가장 기초적이면서도 중요한 파일 입출력에 대해 정리하고자 한다. 모든 소스코드는 우분트 32비트 환경에서 컴파일 하였으며, 시큐리티 옵션을 따로 주지 않았다.   1. 파일 디스크립터 (File Descriptor) 리눅스에서 파일을 읽고 쓰기 위해서는 반드시 파일을 Open 해야만 한다. 파일이 오픈되고 나면 파일 디스크립터라는 일종의 Index 번호가 반환되며, 이 값은 파일을 오픈한 프로세스의  고유 번호라 생각하면 이해하기 쉬울 것이다. 파일 디스크립터는 C int 타입으로 표현되며, 최대값은 1,024이지만 1,048,576번까지 설정할 수 있다. 또한, 프로세스마다 관례적으로 0,1,2 번은 사전 배정되어 있는데 각각 번호별 의미는 다음과 같다. 0 : 표준 입력 (stdin) / 1 : 표준 출력 (stdout) / 2 : 표준 오류 (stderr) 따라서 실제 하나의 파일을 생성하게 되면 “3번” 부터 File Descriptor가 부여된다. [crayon-57bea593bbefa402979982/] 결과 : FD Success…!!! FD is : 3   2. 파일 열기 (File Open) 리눅스 시스템에서는 파일을 읽거나 쓰기 전에,  파일에 접근하기 위한 준비 과정을 거친다. 이 때 사용되는 함수가 바로 open() 또는 creat() 함수이다. open용 함수에서는 flags를 통해 파일의 쓰임새를 정의하게 되는데 O_RDONLY, O_WRONLY, O_RDWR 중 하나를 사용해야 한다. 파일 사용이 끝나면 close()함수를 통해 파일을 닫아주어야 한다. [crayon-57bea593bbf0c376669955/] 지정한 파일명이 존재하지 않을때 생성하고 싶을 때는 O_CREAT flag를 사용한다. 새롭게 생성된 파일의 uid와 gid는 파일을 생성한 프로세스의 그것을 따라가게 된다. (매우 중요함) 파일을 생성하기 위한

Continue Reading

Site Footer

Sliding Sidebar

About Me

About Me

June Park