Monthly Archives: 7월 2017

유저모드 후킹 – 인젝션 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

CVE/CVSS란?

CVE(Common  Vulnerabilities and Exposures)는, 공통 보안 취약성 및 노출(특별한 조작 없이, 바로 공격을 당할 수 있는 상태)에 대한 코드 를 부여하여 해당 취약점을 식별하는데 사용된다. 그리고 이 취약점의 위험도를 나타내는데 이용하는 채점 기준으로 CVSS(Common Vulnerability Scoring System)가 이용된다. CVSS란 취약점을 점수로 표기하기 위해 기본 통계에 가치를 부여하여 점수 0~10 가중치를 줄 수 있도록 계산하는 방정식이다. 이

Read More

Letsencrypt Error – Problem binding to port 443: Could not bind to IPv4 or IPv6.. Skipping

When you install standalone mode, If you try to start to renew, you can meet this error Problem binding to port 443: Could not bind to IPv4 or IPv6.. Skipping     This error simple to resolution is stop to web server and try to renew.

  If you want to renew automatic by

Read More

이상 감지 알고리즘

이상 감지 알고리즘 역시 데이터 과학에서 많이 사용되는 알고리즘입니다.. 이상 감지 알고리즘은 다음과 같은 상황에 유리 합니다. 결제가 정상적인 것인지 알고 싶습니다. 비정상적인 인터넷 사용자를 알고 싶습니다. [그림] Azure PCA 기반 알고리즘 설명 https://docs.microsoft.com/ko-kr/azure/machine-learning/machine-learning-algorithm-choice 위처럼 비 정상적인 행위를 찾아내는 것이 이상 감지 알고리즘 입니다. 이상 감지 알고리즘은 예기치 않은 상황이나 이벤트, 동작을 플래그로 지정하고 어디에서

Read More