Monthly Archives: 1월 2017

TortoiseSVN AutoCommit in Windows – 자동 커밋 배치 만들기

TortoiseSVN 이 제공하는  CLI 명령을 이용하면 쉽게 자동 커밋 기능을 만들수 있습니다. 이를 스케줄러와 함께 사용하면 보다 효과적이라고 할 수 있습니다. 아래는 Batch Script로 작성하였을때 사용할 수 있는 옵션입니다.

  유심히 볼만한 부분은 /closeonend 옵션으로 에러가 있을 때 어떻게 대응할지에 대한 정보입니다. /closeonend:0 don’t close the dialog automatically /closeonend:1 auto close if no errors

Read More

Hidden Process – CreateDesktop

아래 링크를 보면 윈도우의 세션 관리 기능을 이용해서 프로세스를 다른 데스크톱에서 실행하여 사용자에게 숨길 수 있는 코드를 예제로 제공합니다. https://github.com/MalwareTech/CreateDesktop/blob/master/Main.cpp   위 코드와 관련하여, 함께 봐야 할 내용이 아래 내용이라고 할 수 있습니다. https://blogs.msdn.microsoft.com/coreinternals/2009/08/19/session-window-station-desktop/   요약해 보면, 윈도우는 세션 관리를 위해 Windowstation과 Desktop이 있는데 WindowStation은 Desktop을 관리하는 그룹으로 속한 Desktop들이  함께 사용하는 클립보드와 Atom Table(?)을

Read More

Hooking 후킹 – SetWindowsHookEx

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

Read More

Hooking 후킹 – CreateRemoteThread

CreateRemoteThread 후킹을 위해 제일 많이 애용하는 방법이 바로 CreateRemoteThread일 것이다. CreateRemoteThread는 방법도 쉬울 뿐더러 Dll을 인젝션 오류 없이 진행할 수 있다. 그래서 실제 악성코드나 해킹도구에서도 많이 사용하는 방법이다. 그럼 이 CreateRemoteThread를 이용하는 로더 프로그램을 작성해 보자. injectiondll.cpp #include <stdio.h>#include <windows.h>#include <tlhelp32.h>BOOL InjectDll(DWORD PID, char* DllName){ HANDLE h = OpenProcess(PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_WRITE

Read More

해킹 명령어를 이용한 침해 탐지 (Hacker command)

Hacker command? 침해사고를 조사하다보면 해커들이 자주 사용하는 명령들에 대해서 알 수 있습니다. 그럼  해킹 명령어를 이용한 침해 탐지 방법에 대해 알아보도록 하겠습니다. 아래 글을 읽어보면 해커가 자주 사용하는 명령를 이용한 명령과 Applocker를 사용해서 해당 프로그램을 사용하려고 하였을때 실행을 막고 오류를 윈도우 로그에 남기는 방법이 소개되어 있습니다.   http://blog.jpcert.or.jp/.s/2016/01/windows-commands-abused-by-attackers.html 초기 탐지 조사 공격   제 기준으로

Read More

Hooking 후킹 – Code path (Inline patch) 코드 패치, 인라인 패치

해당 파일을 직접 변경하는 방법으로 일반적으로 후킹은 메모리를 대상으로 진행하지만, 몇몇 특수한 상황인 경우, 파일을 직접 수정할 수도 있다. 이는 패킹된 데이터에도 종종 이용하는데, 암호화 해제가 완료되는 시점에 해제된 코드를 인라인 패치를 통해서 수정하고 프로그램을 실행하도록 하는 구조이다. 즉 파일에 비어있는 영역을 이용하여 기계어로 처리하는 로직을 변경하는 것이다. 먼저 프로그램 내에서 빈 공간을 확인한 후에

Read More

후킹 Hooking

후킹에 대해 어느 정도 진행해야 할까 고민이 많이 되었다. 후킹은 영어로 “걸다”라는 의미로, 우리가 익히 알고 있듯이 “가로 채기”와 같다. 즉 중간에 끼어들어 정보를 훔쳐보거나, 가로 채는 MITM(Man in the Middle) 방식으로 원제공자와 처리자 사이에서 지나가는 정보를 보고 이를 조작하는 공격과 유사하다고 할 수 있다. 후킹은 무엇인가를 노리는 낚시와 같이 가장 대표적인 방식으로 특정 프로그램과

Read More

LINUX IPTABLE – Limit the number of incoming tcp connections

오늘 아시는 분이 Linux 에서 Syn Flood 공격 차단에 대해서 문의 해 왔습니다. 아래 정책인데, 보면 limit per second 를 이용해서 특정횟수이상 초단위 연결을 차단하는 룰셋인것 같습니다.

  그리고 이상한 TCP 플래그의 트래픽도 차단하는 룰셋도 함께 적용하면 좋을듯합니다.

  위 룰셋은 플래그가 일반적이지 않은 TCP 트래픽을 차단합니다.    

안티 디버깅(Anti-debugging, 디버거 탐지) – INT3 예외 처리

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

Read More

프로세스(Program) 보호

안티 디버깅과 프로세스 보호는 약간 차이가 있다. 안티 디버깅은 디버깅을 하지 못하도록 하여 프로그램의 실행 내용을 분석하지 못하도록 방해하는 행위로, 프로세스 보호와도 혼용하기도 하지만, 프로세스 보호는 후킹과 같은 외부 프로세스에서 해당 프로그램의 데이터를 조작하지 못하도록 방지하는 기능이라 할 수 있다. 쉽게 얘기하면 정당한 경로로 함수를 호출했는지를 확인하는, 안티 디버깅의 2차적 보안 기능인 셈이다. 안티 디버깅은

Read More