Category Archives: Security

안티 디버깅(Anti-debugging, 디버거 탐지) – BeingDebugged (시스템 구조)

  How to debugging detect? 프로그램 역분석, 즉 프로그램 디버깅 방법을 배웠다면, 해당 프로그램의 코드를 그대로 보는 것과 같아서, 숙달되면 프로그램의 모든 코드를 손쉽게 확인할 수 있다. 이를 통해 개발자가 원하지 않았던 방식으로 처리 흐름을 바꾸거나 데이터를 바꿔 치기 하는 등 악용할 수 있는 소지가 많다. 이를 방지하기 위해 개발된 기술이 바로 안티 디버깅으로, 말

Read More

안티 디버깅(Anti-debugging, 디버거 탐지) – GetTickCount (시간차)

  How to debugging detect? 프로그램 역분석, 즉 프로그램 디버깅 방법을 배웠다면, 해당 프로그램의 코드를 그대로 보는 것과 같아서, 숙달되면 프로그램의 모든 코드를 손쉽게 확인할 수 있다. 이를 통해 개발자가 원하지 않았던 방식으로 처리 흐름을 바꾸거나 데이터를 바꿔 치기 하는 등 악용할 수 있는 소지가 많다. 이를 방지하기 위해 개발된 기술이 바로 안티 디버깅으로, 말

Read More

논리적 격리 VLAN 기본 이해

논리적 격리 VLAN 네트워크 보안에서 많이 사용되는 용어 중에 ACL 다음이 VLAN이 될 것이다. 그럼 먼저 VLAN이 무엇인지 확인해보자 VLAN은 Virtual LAN(Local area network)의 약자로, 하나의 가상의 브리지 도메인(Domain)을 구성하여 Host 혹은 Router(Transparent Bridging 이 동작하는)와 브리지 같은 Network 장비들을 논리적인 하나의 도메인으로 구성하는 것이다. 이는 IEEE 802.10 와 ISL(Inter-Switch Link)같은 2 계층 브리지 프로토콜인

Read More

프록시(Proxy) – IP 숨기기, 속이기

프록시(Proxy) – IP 숨기기, 속이기 적으로부터 자신의 IP를 보호하는 방법으로 내부에서 많이 쓰이는 방법은 Proxy 서버(작은 의미로는 NAT)를 이용하는 것이다. 해커들이 IP를 숨기고자 할 때 자주 사용하는 방식으로 바로 외부에 공개된 프록시 서버를 사용하는 것이다. 여기서는 기본적은 공격시 사용하는 외부 프록시 서버 설정법과 설정 프로그램에 대해 알아보도록 하자. 동작 원리는 다음 그림과 같다. [그림] 프록시 이용시

Read More

Graylog 2.3.x How to install on Centos7 with Syslog input

Graylog 2.3.x How to install on Centos7 with Syslog input   Java 8 JDK Install

  MongoDB Install make file for mongodb repo

mongodb-org-3.2.repo

install mongodb

  ElasticSearch Install make file for elasticsearch repo

elasticsearch.repo

install elasticsearch

edit elasticsearch configuration file

  Graylog Install make file for

Read More

유저모드 후킹 – 인젝션 SetWindowsHookEx

SetWindowsHookEx 메시지 후킹은 앞서 말했듯이 운영체제가 사전에 정해놓은 특정 이벤트(키 입력, 윈도우 크기 변경 등과 같은 작업)를 프로그램이 운영체제에 요청하고 처리 결과를 프로그램에 통보하게 되는데, 이 지점을 가로채기, 즉 후킹하여 메시지를 엿보거나 조작할 수 있다. 이런 메시지 훅은 운영체제에서 제공하는 기본 기능(여기서 소개할 이외 후킹들도 운영체제가 지원하는 기능들을 이용한 것이다)으로 하나의 메시지에 여러 개의 훅을

Read More

유저 모드 후킹 – 코드패치, 인젝션 개념

디버깅: 우리가 진행하는 디버깅 과정도 프로세스 입장에서는 후킹이라 할 수 있다. 이는 커널 디버깅이냐 유저 모드 디버깅이냐에 따라 후킹 범위가 달라지며, 유저 모드 후킹은 디버거를 통해 프로세스를 Attach하는 행위도 후킹이라 할 수 있다. 이때 사용되는 API인 DebugActiveProcess 로써 구조체는 다음과 같다.   BOOL WINAPI DebugActiveProcess(     DWORD dwProcessId );   MSDN의 http://msdn.microsoft.com/en-us/library/ms679295(VS.85).aspx 에서 위 API에

Read More

역분석 – 디컴파일러(Dicompiler)

대다수의 디어셈블러들이 디컴파일(컴파일된 파일을 소스코드로 변환 하는 기능)과 디어셈블리(어셈블리로 변환하여 분석하는 기능)을 함께 지원한다. 이렇다 보니 디어셈블러와 디컴파일러의 구분이 애매할 수 있다. 그래서 이 책에서는 컴파일된 파일을 소스코드로 해석이 가능하지만, 분석(브레이크 포인트 같은 프로그램 상태 제어) 기능은 없는 도구들를 디컴파일러로 구분해 보았다. 디컴파일러는 앞서 얘기하였듯, 실행 파일을 개발단계인 소스코드로 변환해 주는 역할을 한다. 대부분의 디컴파일러는

Read More

역분석 – 디어셈블러(디버거, Debugger)

디어셈블러는 프로그램/하드웨어에서 오류인 버그(Bug)를 세부적으로 추적하여, 분석하는 행위를 말하며, 이와 같은 행위를 일반적으로 디버깅(ㅊ)이라고도 한다. 그리고 이러한 버그를 추적할 수 있는 도구를 디버거(Debugger)라고 한다. 그런데 프로그램의 오류를 찾을 때, CPU에서의 처리 과정을 분석해야 하다 보니 자연스럽게 기계어와 가까운 어셈블리어를 이용하게 되어, 디버거라 하면 디어셈블러를 포함하여 생각하는 게 일반적이다(정식 명칭은 “디어셈블 디버거”이다). 이는 사용분야에 따라 유저

Read More

역분석 – 기계어를 분석한다 (Disassemblers)

기계어를 분석한다 디컴파일러(Dicompiler)와 디어셈블러(Disassemblers)는 쉽게 얘기하자면, 개발이 완료된 프로그램을 분석하기 쉬운 소스코드와 같은 상태로 되돌리는 것을 얘기한다. 우리는 흔히 편리한 자연어로 프로그램 코드를 작성하는데, 프로그램 실행을 위해 이를 CPU가 알 수 있는 기계어(이진수)로 컴파일해야 한다. 이때 컴파일하는 도구를 컴파일러라고 하며, 컴파일러별로 서로 다른 방식으로 기계어를 만들어 내게 된다. 이렇게 생성된 기계어는 사람이 판단하기에는 어렵기 때문에,

Read More