전체 글
-
악성코드 탐지 방법들security 2014. 1. 11. 21:49
보안제품에 적용되는 악성코드 탐지 및 방어 기법들 그림 출처 : 안랩 trust watch 아이러니 한게 모든 소스는 공개되어야 한다고 하지만 동적 분석 툴이 오픈소스가 되어버리면, 악성코드 제작자들이 오픈소스 알고리즘을 분석하여 자신의 악성코드가 이를 우회할 수 있도록 해버린다.. 정적 분석 기반 - 시그니처 기반 시그니처 탐지 기술은 이미 수집된 악성코드의 특징을 분석해 해당 악성코드를 탐지 하는 시그니처를 생성하는 것. AV(Anti-Virus) 스캔으로 기존 알려진 악성코드(known malware)를 판정하거나 파일 헤더 및 바이너리 내 문자열을 분석하는 등의 방법이 이용된다. 좀 더 전문적으로는 디버거를 통한 API 호출 관계 분석 등의 방법으로 악성코드 여부를 판정한다.안랩은 대규모 파일 D..
-
TLS, TEB, PEB, SEHwindows system 2014. 1. 8. 19:06
TLS(Thread Local Storage) TEB(Thread Environment Block) thread확인하려 매번 커널에 들어가지 않기 위해 구조체로 따로뺐다.윈도우의 경우 TEB는 fs[0]에 위치하고 리눅스는 gs 레지스터에 위치한다. PEB(Process Environment Block) PEB는 TEB에서 0x30 떨어진 fs[0x30]에 위치한다. SEH (Structed Exception Handler) 간단히 말하면 SEH 는 윈도우 운영체제가 지원하는 예외 처리의 한 종류이다. 잘못된 메모리를 참조하거나 0으로 나누는 등의 예외 상황이 발생했을 시 우선적으로 미리 등록된 예외 핸들러를 호출해서 이 예외를 처리할 수 있도록 해 주는 것이다. 이러한 예외 처리는 EXCEPTION_R..
-
ARQ(Automatic Repeat reQuest)Network 2014. 1. 1. 22:25
transport layer에서 하는 일: 흐름제어, 혼잡제어 stop & wait with ARQ 가장 간단한 방법으로, 한패킷씩 전송하고 매번 확인한다. 그 외에Go-back-N ARQ데이터 프레임을 연속적으로 전송해 나가다가 NAK을 수신하면, 오류가 발생한 프레임 이후에 전송된 모든 데이터 프레임을 재전송한다. selective ARQ연속적인 데이터 프레임을 전송하고, 에러가 발생한 데이터 프레임만 재전송 한다. adaptive ARQ ??ㅎ
-
[Widnwos] Hooking (Application level)Programming 2013. 12. 31. 02:07
1. Message Hooking SetWindowsHookEx()를 이용해서 hook을 설치해놓으면, 어떤 프로세스에서 해당 메시지가 발생했을 때 운영체제가 해당 DLL파일을 해당 프로세스에 강제로 injection하고, 등록된 hook procedure를 호출한다. 2. How to hook the API ? how?어떤 방식으로 API를 hooking할지의 문제이다. 크게 debugging을 만들거나, 혹은 dll injection으로 후킹이 가능하다. 1) debugging방식(soft hooking) notepad의 writeFILE()후킹 : process에 attach해서, INT3이 호출될때 마다 hooking routine을 수행한다. 2)dll injectionhooking프로그램은 d..
-
IAT(Import Address Table) , EAT(Export Address Table)windows system 2013. 12. 28. 22:29
IAT(Import Address Table) exe는 process생성 주체가 되므로 자신의 ImageBase에 정확히 loading되지만, dll은 자신의 ImageBase에 정확히 loading되지 못하며, 빈 공간으로 relocation된다. IMAGE_IMPORT_DESCRIPTOR구조체로 이루어져 있다. 여러 개의 라이브러리를 import하기 때문에 라이브러리의 개수만큼 위 구조체의 배열 형식이 존재하며, 마지막엔 null구조체를 넣어주어야한다. IMPORT Name Table(INT) 구조체에선 OriginalFirstThunk, PEView에선 IMPORT Name Table(INT)이란 이름으로 되어있다. IAT는 IMAGE_IMPORT_BY_NAME 구조체의 배열로 이루어져 있다. 첫 ..
-
DLL injectionwindows system 2013. 12. 24. 11:33
DLL injection 실행중인 다른 프로세스에 특정 DLL파일을 강제로 삽입하는 것 삽입된 DLL은 해당 프로세스의 메모리에 대한 정당한 접근권한을 갖는다. DLL injection 구현방법 -CreateRemoteThread() API -AppInit_DLLs 값 -SetWindowsHookEx() API -수작업 패치 -CreateRemoteThread() API http://msdn.microsoft.com/en-us/library/windows/desktop/ms682437(v=vs.85).aspx CreateRemoteThread(hProcess, //hProcess NULL, //lpThreadAttributes 0, //dwStackSize pThreadProc //lpStartAddre..
-
CreateProcess APIwindows system 2013. 12. 23. 10:58
CreateProcess API : http://msdn.microsoft.com/en-us/library/ms682425.aspx LPCTSTR lpApplicationName, //생성프로세스의 실행파일 이름LPTSTR lpCommandLine, //argc,argv인자 전달, 첫인자를 NULL로 주고 실행파일이름 인자 써도 가능LPSECURITY_ATTRIBUTES lpProcessAttributes, //보안속성 보통NULLLPSECURITY_ATTRIBUTES lpThreadAttributes, //쓰레드 보안속성 보통NULLBOOL blnheritHandles, //전달인자가 TRUE면 자식프로세스는 부모의 핸들중일부상속DWORD dwCreationFlags, //프로세스의 특성결정LPVOID..