Taint Analysis 연구분석보고서

그외 2011. 1. 17. 17:08 Posted by 알 수 없는 사용자

Taint Analysis 연구분석보고서

By. bdr@a3sc.co.kr
(A.K.A Dear.Tom)
kerz@a3sc.co.kr
(A.K.A k3rz)


I. Introduction

1. Motivation
Application이 입력 받는 외부 데이터(인자)는 어느 정도까지 “영향”을 줄 수 있는가? 라는 의문은 Information(Data) Flow, Taint Analysis 분야를 발전할 수 있게 한 동기부여가 되었습니다. 즉 외부 데이터로부터 영향을 받는 부분을 찾기 위한 방법의 발전이라고 할 수 있습니다.
“영향”을 줄 수 있는 것들에는 MP3, PDF, 네트워크 패킷 등과 같이 어플리케이션의 외부 데이터를 말할 수도 있으며, 시스템 커널에 영향을 주는 정보(Understanding Data)를 의미할 수도 있습니다.

2. 용어 정의
가. Information Flow
디버거로 어플리케이션의 내부를 보면, 실행되는 동안 Information은 복사되고, 수정되고 있습니다. 즉 Information 은 항상 움직이는 것이라고 정의할 수 있습니다.

Taint analysis는 Information Flow 분석의 한 형태라고 볼 수 있습니다.
 
상세한 정보는 “Certification of Programs for Secure Information Flow”[2]를 참고하시기 바랍니다.

나. Flow
연산이 사용되는 객체의 X와 이로부터 파생된 객체의 Y가 있을 때, “X에서 Y로 흐른다(flow)”라고 말합니다.

다음은 Flow 개념을 설명한 도식화 화면입니다.
 


[그림 1] Flow 도식도


다. Taint Analysis
Taint Analysis는 외부 입력 영향으로부터 흐름을 파악 하는 것을 말합니다. 즉 다음과 같이 정의 할 수 있습니다.

● 모든 외부 입력을 비 신뢰성(untrustworthy) 값으로 간주하며, 이들의 데이터 흐름을 추적하는 기법

Taint Analysis는 일반적으로 프로그램의 분석을 위해 사용되는 경우가 많은데, 예를 들어 메모리 퍼포먼스, footprint, 보안 TEST 목적 등이 있으며, TaintBochs와 같은 시스템 에뮬레이터를 이용하면 운영체제 동작 감시도 가능합니다.

보안적 관점으로 봤을 경우 Taint Analysis로부터 취약한 메모리 영역의 추적이 가능하므로, 0-day 취약점, 악성코드 분석 등에 응용이 가능합니다.

라. Taint 객체
“객체의 출처 값을 신뢰 할 수 없다면(untrustworthy), 그 객체 역시 Taint 되었다.” 라고 말합니다.

다음은 Taint 객체 개념을 설명한 도식화 화면입니다.
 


[그림 2] Tainted 객체

마. Taint propagation
“만약 taint 된 객체 X와 연산으로 파생된 객체인 Y가 있을 때, 객체 Y는 taint 되었으며, 객체 X로부터 객체 Y로 taint 되었다”라고 말합니다.

Taint는 t로 표시합니다. (“Taint operator t”)
위의 정의 내용은 X → t(Y) 로 표시할 수 있으며, 다음과 같은 성질을 가졌습니다.

 X → t(Y) and Y → t(Z), then X → t(Z)

다음은 Taint propagation 개념을 설명한 도식화 화면입니다.
(도식에서 나타내듯 2가지 이상의 Tainted source 들은 융합될 수 있습니다.)
 


[그림 3] Tainted propagation 도식도

 

II. Taint 여부 판별 방법

대부분의 Taint Analysis tool 은 C, C++, Java 프로그래밍 언어를 위해 사용 사용되며, 프로그램의 소스 코드가 없어도 분석됩니다. 또한 각각의 High-level 의 언어로 파싱 할 필요가 없습니다.
본문에서는 x86 아키텍처를 기준으로 설명을 주로 하겠습니다.

Taint Analysis 모듈은 x86아키텍처에서 사용하기 위해서 최소한 다음과 같은 조건을 갖춰야 합니다.

● 각각의 명령 연산의 모든 피연산자는 식별 가능하여야 합니다.
● 피연사자의 유형(source/destination)은 식별 가능하여야 합니다.
● 각각의 tainted 객체는 추적이 가능하여야 합니다.
● 각각의 명령의 의미가 명확해야 합니다.

예를 들어 전형적인 명령으로 “mov eax, 040h”을 보자면 2가지 확실한 피연산자는 eax 그리고 040h 값을 나타냅니다. Destination 피연산자는 eax, source 피연산자는 eax(register), 040h 값을 나타냅니다. (다른 명령들 중에는 함축적인 피연산자를 가지기도 합니다.) 여기에서 만약 source 피연산자인 040h 값이 taint source 피연산자라고 하면 eax 또한 Taint 피연산자 값이 되고, 이와 파생된 값들도 taint 된 값이 됩니다. 위의 내용은 단순한 명령을 예로 생각했지만, 수많은 연산, 명령을 통해서 실제로는 더 복잡할 것 입니다.

Taint Analysis tool은 x86 명령을 중간언어(IL: Intermediate Languages)로 바꿔준 후 해석하는 형태를 띄는데, 이유는 구문 분석(parse)하기 쉽고, 피연산자를 식별할 수 있기 때문입니다.

Taint 추적 매커니즘은 bit 혹은 byte 단위로 이루어질 수 있습니다.


1. Taint objects on x86
X86 아키텍처 안에서는 2가지 객체가 Taint 될 수 있는데, 다음과 같습니다.
● Memory locations
● Processor registers

가. Memory objects
● 메모리 영역의 초기 주소 값을 저장
● 메모리 영역의 크기(size)를 저장

나. Register objects
● 레지스터 식별자(이름)를 저장
● bit-level 추적 기법에서는 개별 bit를 저장

다음은 Taint object에 대한 도식화 화면입니다.
 


[그림 4] Taint objects 도식도


2. Instruction analysis
ISA(Instruction Set Architecture)는 다음과 같이 몇 가지 카테고리로 분류할 수 있습니다.
● 할당 지시자(Assignment instruction): mov, xchg 등
● 2진 지시자(Boolean instruction): AND, OR, XOR 등
● 산술 지시자(Arithmetical instruction): add, sub, mul, div 등
● 문자열 지시자(String instruction): scas, lods, cmps 등
● 분기 지시자(Branch instruction): call, jmp, jnz 등

가. 할당 지시자(Assignment instruction)
mov eax, dword ptr [4C001000h]

메모리 4C001000h 영역에 있는 값이 tainted 데이터라면, 이 값을 할당 받은 eax 또한 tainted 데이터가 됩니다.

다음은 Taint 할당 지시자 MOV개념 도식화 화면입니다.
 


[그림 5] Taint 할당지시자 MOV 도식화

나. 2진 지시자(Boolean instruction)
2진 연산(AND, OR, XOR 등) 결과의 tainted 여부는 입력된 tainted 데이터가 결과값에 어떤 영향을 주었는지를 보고 판단합니다. 단, 2개의 입력 값 모두가 taint된 경우는 제외합니다.

(1) AND 진리표(truth table)

                         A                          B                   A AND B
                         0                          0                          0 
                         0                           1                           0 
                         1                          0                          0
                         1                          1                          1 


A가 taint된 값이라고 가정했을 때,
- B가 0일 경우 그 결과는 무조건 “taint 되지 않았다.(untainted)”라고 판단
- B가 1일 경우 그 결과는 무조건 “taint 되었다.(tainted)”라고 판단

왜냐하면, AND연산의 특성(2개의 입력 값 모두가 1일 경우에만 참) 상 B가 1일 경우에만 A의 값에 영향을 받기 때문입니다.

다음은 Taint 2진 지시자 AND 개념 도식화 화면입니다.
 


                                           [그림 6] Taint 2진지시자 AND 도식화

(2) OR 진리표(truth table)

                         A                          B                    A OR B
                         0                          0                          0 
                         0                           1                           1
                         1                          0                          1
                         1                          1                          1 

A가 taint된 값이라고 가정했을 때,
- B가 1일 경우 그 결과는 무조건 “taint 되지 않았다.(untainted)”라고 판단
- B가 0일 경우 그 결과는 무조건 “taint 되었다.(tainted)”라고 판단

왜냐하면, OR 연산의 특성(1이 하나라도 있을 경우 무조건 참) 상 B가 0일 경우에만 A의 값에 영향을 받기 때문입니다.

(3) XOR 진리표(truth table)

                         A                          B                    A XOR B
                         0                       0                       0 
                         0                        1                        1 
                         1                       0                       1
                         1                       1                       0 


A가 taint된 값이라고 가정했을 때,
- B의 값에 상관없이 모든 결과는 “taint 되었다.(tainted)”라고 판단

왜냐하면, XOR 연산의 특성(둘 중 하나만 1일 경우에만 참) 상 B가 어떤 값이든 A의 값에 영향을 받기 때문입니다. 단, A xor A의 연산처럼 A값이 어떤 값이든 그 결과가 무조건 0이 되는 경우는 “taint되지 않았다.(untainted)”라고 판단합니다.

다음은 Taint XOR 개념 도식화 화면입니다.
 


                                                                [그림 7] Taint XOR 개념 도식화

(4) 항진 명제(tautology)와 모순 명제(contradiction)
- 항진 명제는 입력 값과 상관없이 항상 결과가 참인 경우
- 모순 명제는 입력 값과 상관없이 항상 결과가 거짓인 경우
- 그러므로, taint 된 입력 값이 들어왔다 하더라도 무조건 “taint되지 않았다(untainted)”라고 판단

(5) 상수(constant)를 이용한 연산
- 무조건 “taint 되지 않았다(untainted)”라고 판단

다. 산술 지시자(Arithmetical instruction)
sub, add, mul 등의 산술 지시자는 내부적으로 2진 연산을 이용합니다. 예를 들어, ADD 연산은 AND 및 XOR의 연산으로 이루어져 있습니다. 그러므로 “하나의 피연산자가 taint 되어 있을 경우에는 그 결과 또한 taint 되었다.”라고 판단합니다. 그리고 이 결과에 영향 받는 EFLAGS(ZF, OF, DF, CF 등) 레지스터 또한 “taint 되었다”라고 판단합니다.

라. 문자열 지시자(String instruction)
tainted 문자열은 어떤 문자열 지시자가 적용되더라도 생성된 객체는 “taint 되었다.(tainted)”라고 판단합니다.

● taint된 문자열에 대한 크기(size) 값 또한 taint 되었다고 판단
● taint된 문자를 검색한 값과, 그 결과로flag(found/not found)를 설정하는 경우에도 taint 되었다고 판단

마. Taint 된 객체의 수명(Lifetime)
다음은 taint된 객체가 생성/유지 되는 경우와 제거되는 경우를 설명한 내용입니다.

(1) 생성/유지
- 신뢰하지 못할(untrusted) 객체로부터 할당 받은 경우
- tainted 객체로부터 할당 받은 경우

(2) 삭제
- untainted 객체로부터 할당 받은 경우
- tainted 객체로부터 할당을 받았지만, 그 결과가 상수인 경우

 

III. 응용

1. Exploit 검출

Taint Analysis를 통해 Exploit 검출 할 수 있는데, 사용자 데이터의 추적이 가능하다면, 신뢰할 수 없는(nontrusted) 데이터가 privileged location에서 사용되었는지 검출이 가능합니다. 이를 통해 위험한 부분을 찾을 수 있으므로 패치하여 위험성을 낮출 수 있을 것 입니다.

Privileged location에 대해 설명하자면, 조금 작은 그림으로 생각하면 특정 OS상에서 특권 레벨(privileged level), 사용자 레벨(unprivileged level)로 구분하여 생각할 수 있는데, 신뢰할 수 없는(nontrusted) 데이터가 어떤 위치에서 사용되고 있는지 검출한다는 의미로 보시면 됩니다.

Taint Analysis - Exploit detection 으로 SQL Injection, XSS, BoF(Buffer overflows) 검출이 가능하며, 심지어 Unkown Attack 검출도 가능합니다.


2. 데이터 수명(lifetime) 분석
Taint Analysis를 통해 데이터 수명을 분석하면 가상 머신 메모리 안에 저장된 민감한 정보(비밀번호, 신용카드 정보) 데이터 수명을 추적 할 수 있습니다. 그리고 대부분의 Application 의 경우 민감한 정보 데이터의 수명을 최소화하기 위해 어떠한 조치도 하지 않습니다.

상세한 내용은 “Understanding data lifetime via whole system Simulation”[3]를 참고하시길 바랍니다
 

IV. 활용방안

1. DBI(Dynamic Binary Instrumentation)
가. 용어 정의
(1) Instrumentation
실행정보를 수집하기 위해 프로그램에 임의의 코드를 삽입하는 기술을 의미합니다.

(2) Dynamic Binary Instrumentation
실행중인 어떤 프로그램(프로세스)에 특수한 목적(모니터링, 통계 등)으로 사용될 임의의 코드를 삽입하는 방법입니다.

나. DBI의 유용성
● Recompile 및 Relink가 필요 없어 작업 효율성을 높일 수 있다.
● 실행중에 특정 코드를 발견할 수 있다.
● 동적으로 생성된 코드를 처리할 수 있다.
● 기존에 실행중인 프로세스를 불러와(attatch) 분석 할 수 있다.

다. 주요 목적
(1) 컴퓨터 구조 연구
● Trace Generation
● Branch Predictor and Cache Modeling
● Fault Tolerance Studies
● Emulating Speculation
● Emulating New Instructions

(2) 프로그램 분석
● Code Coverage
● Call-graph generation
● Memory-leak detection
● Instruction profiling

(3) 스레드 분석
● Thread profiling
● Race detection

라. DBI Tools
다음은 DBI 관련 Tool들을 간략하게 정리한 내용입니다.

 Tool 이름  실행환경  특징
 WIN  LINUX  MAC 다양한 플랫폼 지원
 Pin  O  O  O Intermediate Language(Vex) 기반
 DynamicRIO  O  O  O -
 TEMU  O  O  - Virtual Machine(QEMU) 기반
- 시스템 전체를 분석 가능


2. PIN
PIN은 대표적인 DBI 도구로써, 다양한 플랫폼(Linux, Windows, MacOS)에서 사용가능합니다. C 혹은 C++로 작성된 임의의 코드를 실행코드의 한 부분으로 삽입시킬 수 있으며, 이미 실행중이던 프로세스를 attach 시키는 일도 가능합니다. 특히, 방대한 API를 제공하여 사용자가 원하는 툴을 직접 제작하기 쉽도록 도와주며, 기본적으로 제공되는 툴 또한 많이 있습니다.

PIN은 일종의 “Just In Time”(JIT) 컴파일러입니다. 하지만, 해당 컴파일러에 입력되는 값은 바이트코드가 아닌 일반적인 실행파일입니다. 하나의 명령어가 실행될 때마다 그 흐름을 가로채어PIN 내부적으로 새로 생성(컴파일)한 코드를 실행하며, 이때 사용자가 원하는 코드를 삽입(Instrumentation) 할 수 있습니다.
 

                                                                [그림 8] PIN’s Software Architecture


가. 사용법
기본적인 PIN의 사용법은 다음과 같습니다.
$ pin [pin-option]... –t pintool [tool-options]... -- application

● pin ← Instrumentation Engine
● pintool ← Instrumentation Tool
● application ← Target Program(or process)

나. Tools
PIN에서 제공하는 기본적인 Tool에는 다음과 같습니다.

Tool Name: 기능

inscount0: Simple Instruction Count
itrace: Instruction Address Trace
pinatrace: Memory Reference Trace
imageload: Detecting the Loading and Unloading of Images
proccount: Procedure Instruction Count
malloctrace: Finding the Value of Function Arguments
malloc_mt: Instrumenting Threaded Application
buffer-lin: Using the Fast Buffering APIs
follow_child_tool: Instrumenting Child Process

(1) pinatrace
대상 프로그램에서 메모리에 접근(Read or Write)하는 내역을 기록하여 출력해줍니다.

다음은 cmd.exe를 대상으로 pinatrace 툴을 실행한 화면입니다.

 D:\_PIN_>pin.bat -t .\source\tools\SimpleExamples\obj-ia32\pinatrace.dll -- cmd
\d dir
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

D:\_PIN_>
                                                                [그림 9] pinatrace 실행화면

다음은 cmd.exe 에서 메모리에 접근 한 결과를 보여주는 화면입니다.
 


                                                                [그림 10] pinatrace 결과화면

위의 화면에서 결과값은 다음을 의미합니다.

IP(Instrumentation Points): Access(R or W) &Addr (R or W)Size *Addr

(2) Imageload
프로그램에서 불러들이는 이미지 정보를 기록하여 출력합니다.

다음은 cmd.exe를 대상으로 imageload 툴을 실행한 화면입니다.

 D:\_PIN_>pin.bat -t .\source\tools\ManualExamples\obj-ia32\imageload.dll -- cmd
\d dir
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

D:\_PIN_>dir

                                                                [그림 11] imageload 실행화면

다음은 cmd.exe 에서 불러들이는 이미지 정보를 보여주는 화면입니다.

 

                                                                [그림 12] imageload 결과화면

(3) proccount
프로그램에서 실행되는 프로시저를 기록하여 출력합니다.

다음은 cmd.exe를 대상으로 proccount 툴을 실행한 화면입니다.

 D:\_PIN_>pin.bat -t .\source\tools\ManualExamples\obj-ia32\proccount.dll -- cmd
\d dir
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

D:\_PIN_>dir

                                                                [그림 13] proccount 실행화면

다음은 cmd.exe 에서 실행되는 프로시저 정보를 보여주는 화면입니다.

 
                                                                [그림 14] proccount 결과화면

(4) malloctrace
함수로 전달되거나, 함수에서 반환되는 인자 값을 찾아 출력해 줍니다.

다음은 cmd.exe를 대상으로 malloctrace 툴을 실행한 화면입니다.

 D:\_PIN_>pin.bat -t .\source\tools\SimpleExamples\obj-ia32\malloctrace.dll -- cm
d \d dir
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

D:\_PIN_>


                                                                [그림 15] malloctrace 실행화면

다음은 malloc(), free()를 위한 인자 값 및 malloc()으로부터 반환되는 값을 보여주는 화면입니다.
 


                                                                [그림 16] malloctrace 결과화면

(5) Debugging
Linux의 GDB나 Windows의 Visual Studio를 이용하여 Pin에서 실행되고 있는 프로그램을 Attach 시켜 디버깅을 할 수 있습니다.

다음은 [터미널1]에서 pintool(inscount0.so)을 gdb로 넘겨준 화면입니다.
 

                                                                [그림 17] GDB 실행

다음은 [터미널2]에서 –pause_tool 옵션을 이용하여 pid를 확인하는 화면입니다.
 

                                                                [그림 18] pid 확인

다음은 [터미널1]에서 PIN에서 실행되고 있는 프로세스를 Attach 시키는 화면입니다.
 

                                                                [그림 19] attach

이후로는 일반적인 상황과 마찬가지로 디버깅을 하시면 됩니다.

다. Routines
pintools의 코드에는 2가지 중요한 루틴이 포함되어 있습니다.

다음은 중요 루틴을 설명하기 위한 예제코드로써, 프로그램에서 사용되는 Instruction의 갯수를 파악하는 모듈입니다.

 inscount0.cpp
(...)
void docount() { icount++; }  //analysis routine

void Instruction(INS ins, void *v) //instrumentation routine
{
 INS_InsertCall(ins, IPOINT_BEFORE, (AFUNPTR)docount, IARG_END);
}
(...)


(1) Instrumentation routines
Instrumentation 코드를 “어디에 삽입” 할 것인지를 정의하는 루틴입니다. 위의 예제 코드에서는 프로그램에서 사용되는 instruction의 갯수를 파악하기 위해 instruction이 실행되기 바로 전에 counting 함수를 위치시킵니다.

(2) Analysis routines
instumentation 코드가 활성화 될 때, “무엇을 할 것인지”를 정의하는 루틴입니다. 위의 예제를 이어서 생각해 보면, 프로그램에서 Instruction이 실행될 때 마다 해당 루틴이 호출되어 카운팅 변수의 값을 늘리게 됩니다.


3. Valgrind
Valgrind는 실행 파일의 디버깅과 프로파일링을 위한 Open-source 입니다. 주로 Memory-leak, Thead profiling, Race detection 에 사용되며, --tool 옵션으로 tool 사용이 가능합니다.

가. 사용법
기본적인 Valgrind의 사용법은 다음과 같습니다.
$ valgrind –-tool=<name> Prog-and-args

● valgrind ← Instrumentation Engine
● <name> ← Instrumentation Tool
● Prog-and-args ← Target Program(or process)

나. Tools
valgrind에서 제공하는 기본적인 Tool에는 다음과 같습니다.
Tool Name 기능
Memcheck memory error detector
Cachegrind cache and branch-prediction profiler
Callgrind call-graph generating cache profiler
Helgrind thread error detector
DRD thread error detector (similar helgrind)
Massif Heap profiler
DHAT different kind of heap profiler
Ptrcheck experimental heap, stack and global array overrun detector
BBV experimental SimPoint basic block vector generator

(1) Cachegrind
프로그램의 캐시 프로파일링을 합니다.

다음은 cachegrind를 사용한 결과 화면입니다.
 


                                                                [그림 20] Cachegrind 결과화면

(2) memcheck
Valgrind 사용시 일반적으로 사용되는 tool이며, 다음과 같은 경우를 알려줍니다.

• 초기화되지 않은 메모리 사용
• free된 메모리에 Read/Write를 시도한 경우
• malloc된 메모리 블록 외에 Read/Write 를 시도하는 경우
• stack의 부적절한 지역에 Read/Write 가 시도되는 경우
• 메모리 노출(leak) - malloc되고 free되지 않은 메모리
• 초기화되지 않거나 주소를 알 수 없는 메모리가 시스템 호출로 넘겨지는 경우
• memcpy()와 관련된 함수에서 SRC, DST의 포인터가 겹치는 경우
• 몇 가지의 POSIX pthreads API의 잘못된 사용

다음은 memcheck를 사용한 결과 화면입니다.
 


                                                                [그림 21] memcheck 결과화면

(3) helgrind
helgrind는 멀티 쓰레드 프로그램에서 데이터의 경쟁 상태를 알려줍니다.

다음은 helgrind를 사용한 결과 화면입니다.
 


                                                                [그림 22] helgrind 결과화면

(4) callgrind && (kcachegrind || callgrind_annotate)
callgrind 프로파일링을 위해 사용되며, 출력 파일(filename.out.pid)을 생성합니다. 호출의 호출 관계를 보여줍니다.
생성된 출력 파일은 kcachegrind, callgrind_annotate 를 통해 보기 편하게 변환이 가능합니다.

다음은 출력된 파일을 확인한 화면입니다.
 


                                                                [그림 23] callgrind 출력파일 확인

다음은 callgrind를 사용한 결과 화면입니다.
 


                                                                [그림 24] callgrind 결과

[kcachegrind]
다음은 kcachegrind를 실행한 화면입니다.
 


                                                                [그림 25] kcachegrind 실행 화면

다음은 kcachegrind를 실행한 결과 화면입니다.
 


                                                                [그림 26] kcachegrind 결과화면(1)

다음은 kcachegrind를 실행한 결과 화면입니다.
 

                                                                [그림 27] kcachegrind 결과화면(2)

[callgrind_annotate]
다음은 callgrind_annotate를 실행한 화면입니다.
 


                                                                [그림 28] callgrind_annotate 실행화면

다음은 callgrind_annotate를 통해 생성된 파일을 확인한 화면입니다.

 
                                                                [그림 29] callgrind_annotate 출력파일 확인

(5) tainter
Cambridge 의 컴퓨터 연구소(Computer Laboratory)에서 만든 valgrind taint analysis tool 이며, Opensource 입니다.

URL) http://www.cl.cam.ac.uk/~wmk26/tainter/

다음은 tainter를 실행한 화면입니다.
 


                                                                [그림 30] tainter 실행화면

다음은 tainter를 사용한 결과 화면입니다.
 


                                                                [그림 31] tainter 결과 화면

 

V. 결론

Taint Analysis는 보안적인 입장에서 보면 외부 입력에 대한 데이터의 흐름을 분석하여 취약한 부분을 추적하는 기법입니다. 다양한 방식으로 Taint Analysis는 적용될 수 있습니다. 예를 들어 디버거를 이용하여 디버깅된 모든 코드를 한 줄씩 확인하는 방법으로 취약점을 찾을 수 있습니다. 하지만 파일의 크기가 커지게 되면 이 방법으로 찾기에는 한계가 있을 수 있습니다. 그럴 때, Taint analysis 단계를 걸치면 취약할 수 있는 메모리 위치 등을 조금 더 수월하게 찾을 수 있습니다. 특히, 공격자의 입장에서 보면 공격 대상(Target)의 취약한 부분(예를 들어, BOF나 SQL Injection이 발생하는 부분)을 찾아 공격할 수 있을 것 입니다.
Taint analysis는 보안 컨설턴트 입장에서는 취약점을 찾기 위한 준비단계라고 볼 수 있으며, 응용방법에 따라서 만족스런 결과 창출이 가능합니다.

 

VI. 참고문헌

[1] Barbosa. Edgar. COSEINC Solid Security. Taint Analysis. In H2HC 2009
[2] D. E. Denning and P. J. Denning. Certification of programs for secure information flow. Communications of the ACM, 1977
[3] J. Chow, B. Pfaff, T. Garfinkel, K. Christopher, and M. Rosenblum. Understanding data lifetime via whole system simulation. In USENIX Security, 2004
[4] BSDaemon. Dynamic Program Analysis and Software Exploitation. In Phrack issue#67-10, August 14 2010
[5] Valgrind Project. http://www.valgrind.org
[6] Pintool. http://www.pintool.org/
[7] Wei Ming Khoo. Tainter. http://www.cl.cam.ac.uk/~wmk26/tainter/
[8] Bitblaze Project. http://bitblaze.cs.berkeley.edu/temu.html

HITB 메거진

그외 2010. 10. 15. 15:59 Posted by TEAMCR@K
보안.해킹 분야에 대한 전문 메거진인데, 현재 4회까지 나온거 같네요.  (Hack9와 비슷한 느낌)

최신 이슈에 대해서 분석이 자세하게 되어 학습하는데 도움이 많이 될거 같습니다.

url) https://www.hackinthebox.org/misc/HITB-Ezine-Issue-001.pdf
url) https://www.hackinthebox.org/misc/HITB-Ezine-Issue-002.pdf
url) http://magazine.hitb.org/issues/HITB-Ezine-Issue-003.pdf
url) http://magazine.hitb.org/issues/HITB-Ezine-Issue-004.pdf

100824_A3SECURITY SMS 2010 - MADE 人 SECURITY

그외 2010. 9. 3. 17:37 Posted by 알 수 없는 사용자

A3Security SMS 2010 세미나를 마치고

 

에이쓰리시큐리티 기획실 김춘곤


0. 준비하면서 기획 의도

 

무언가 행사를 한다는 것은 생각보다 훨씬 번거롭고 귀찮으면서 떨리는 일이 아닐 수 없습니다. 특히나 행사 당일 텅 빈 객석을 보면 이 자리가 제발 채워지기만 기도하게 됩니다.

회사의 위상을 높이고, 고객에게 필요한 정보를 제공함으로써 고객에게 쓸모 있는 기업이라는 이미지와 나아가서 향후 영업적인 소스로써 활용될 수 있도록 이 회사에게 무언가 일을 맡겨 보고 싶구나 라는 생각을 들도록 하는 것이 언제나 말처럼 쉬운 일은 아닙니다.

 

뭔가 행사에 앞서 기획을 하고, 이 행사에 참석시키고 싶은 사람이 누군지 생각하고 그 사람들에게 제공해 줄 수 있는 것이 무엇인지 고민하는 것은 참 어려운 일이라고 생각합니다.

 

기술이 발달하면서 다양한 보안 솔루션들이 넘쳐 나고 있는 데도 불구하고, 보다 안전한 IT 환경이 구현되고 있는지에 대한 물음표는 항상 남아 있습니다. 우리 에이쓰리시큐리티는 국내 최초 정보보호컨설팅 기업으로써 약간(?)의 사명감을 가지고 또한 좀 더 쉽게 보안이라는 분야에 접근하기를 바라는 마음과 이를 위하여 보안 관리자 분들이 조금 더 신경 써 주시고 노력해 주신다면 훨씬 더 안전한 환경의 구현이 가능할 것이라는 생각을 하면서 이번 행사를 준비하였습니다.



<그림1. 행사 시작 전 코엑스 그랜드 볼룸>

1. 환영사

한재호 대표님께서 준비하신 환영사 역시 우리의 이런 취지에서 벗어나지 않았습니다. 그리고 차후에는 좀 더 큰 행사로 발전하기 바란다는 말씀에 준비하는 입장에서 조금 찔끔(--;)하기도 하였지만, 에이쓰리시큐리티라는 기업에 대한 소개와 보안 관리자들이 왜, 어떤 것들을 준비해야 하는지에 대한 설명을 해 주시고 세미나 전반에 대한 소개를 잘 정리해서 해주셔서 다소 미진한 행사 준비를 채워주셨습니다.


<그림2/3. 한재호 대표이사님의 환영사(특별한 뜻이 있어서 사진이 2장인 건 아닙니다. 딸랑딸랑)>

2. 세션1 – 보안 컴플라이언스와 보안관리자의 역할

첫번째 세션은 한국인터넷진흥원(KISA) 이강신 단장님께서 "강화되는 보안 컴플라이언스에서 보안관리자의 역할"이라는 주제로 발표를 진행하여 주셨습니다. 사실 보안은 항상 컴플라이언스와 뗄래야 뗄 수 없는 관계에 있습니다. 특히나 저희가 보안 관리자 분들을 대상으로 진행하는 세미나인 만큼 꼭 알아야 하는 것이라고 생각해서 처음부터 제1세션에 내용은 확고하게 선정하고 시작하였습니다.

다만, 발표자가 단순히 우리 인원들이 하는 것보다는 아무래도 좀 더 공신력 있는 분이 해주시는 게 어떨까 해서 조심스럽게 이강신 단장님께 요청드렸는데, 흔쾌히 응해 주시고 좋은 발표 해주셔서 무척이나 감사했습니다.


<그림4. 세션1 - KISA 이강신 단장님>

3. 세션2 – 컴플라이언스 ESP 시스템 구축

두번째 세션은 앞선 세션에서 언급된 강화되는 보안 컴플라이언스 환경을 효율적으로 대처하기 위한 A3SECURITY RFinder ESP 대하여 전상미 ESP본부장님께서 발표하는 시간이었습니다.

정보보호의 중요성은 지속적으로 대두되고 있지만, 전체적인 업무 시스템 안에서 이를 적절하게 시행하기 위한 방법에 대해서는 실질적으로 이를 관리해야 하는 보안 관리자들에게 쉽지 않은 일입니다. 전상미 본부장님께서는 이러한 보안 관리에 보다 쉽고 편하게 접근 가능할 수 있도록 해주고, 경영진이나 관리자들이 현재의 상황을 일목요연하게 볼 수 있도록 해주며, 실무자들에게 어떻게 보안을 해야 하는지 방향을 제시해 주셨습니다.

준비한 것이 조금 더 있으셨는데, 짧은 발표 시간의 제한이 조금은 아쉬웠던 시간이었습니다.


<그림5/6. 세션2 - ESP사업본부 전상미 이사님>

4. 세션3 – 신한은행 조기대응시스템 구축 사례

1부 행사의 마지막 세션에서는 신한은행 김진섭 차장님께서 RFinder ESP의 기능 중 조기 경보/ 조기 대응을 중심으로 하여 구축한 신한은행의 조기대응시스템 AEGIS(아이기스)의 구축 사례를 설명하여 주셨습니다.

소프트웨어를 개발하여 공급함에 있어서 개발하는 벤더사의 입장에서 생각하는 활용 방법 보다는 실제로 이를 활용해야 하는 고객의 입장에서 바라봐야 한다는 것이 어떤 건지 보여주는 좋은 사례였으며, A3SECURITY RFinder ESP를 적절하게 사용하는 방안에 대한 설명의 자리이기도 했습니다.

<그림7. 세션3 - 신한은행 김진섭 차장님>

5. 휴식시간

휴식시간에는 부스를 통한 서비스와 제품을 소개하는 자리를 약소한 다과와 함께 진행하였습니다. 부스에서는 다양한 RFinder 솔루션 소개, 보안 관제 등 서비스 소개, 그리고 A3SECURITY의 최고의 품질과 서비스의 보안 컨설팅을 소개하는 자리를 마련하였습니다.


<그림8. 그날 무척이나 알흠다우셨던 윤대리님>

<그림9. 말씀나누고 계신 김형섭 이사님과 황철호 차장님>

<그림10. 등록대 모습>


6. 세션4 – 보안 관제 패러다임의 변화

다시 시작한 2부의 첫번째 세션 발표는 본래 스마트폰과 관련된 세션이었으나, 발표자이신 주세홍 팀장님이 일정 때문에 다소 늦어지셨고, 이 바람에 갑작스럽게 유훈상 팀장님께서 2010 A3SECURITY가 야심차게 준비하고 있는 차세대 보안 관제 서비스 AEGIS(이지스) 소개를 비롯하여, 최근 보안 관제 트렌드에 대해서 설명해 주시는 자리였습니다.

재미있었던 것은 현장에서 RFinder를 이용하여 구축한 신한은행 조기 경보 시스템의 명칭 역시 동일한 철자를 이용하는 AEGIS였으며, 다만 읽는 방법이 그리스어(아이기스)인가, 아니면 영어(이지스)인가의 차이만 있을 뿐이었습니다. 둘 다, 메두사의 머리가 각인된 방패로써 IT 자산을 안전하게 보호한다는 의미와 미해군의 최첨단 레이더함에서 그 의미를 따왔습니다.

<그림11. 세션4-유훈상 팀장님, 곽대리가 찍었는데 쓸만하게 얼굴 나온 사진이 한 장도 없는 건... 뭔가 음모가...>

7. 세션5 – 스마트폰 보안위협과 대응 전략

세미나 준비 전부터 가장 큰 관심을 끌었던 것은 역시 최근의 IT 화두라고 할 수 있는 "모바일"이었습니다. 우여곡절 끝에 시작한 세션5는 시작전부터 여러 언론사에서 미리 자료를 요청하는 등 반응이 꽤나 뜨거웠으며, 여러가지 사정으로 나가지는 못했지만, 실제로 공중파에서도 촬영 요청이 오곤 했습니다. 준비하는 저희 쪽에서도 발생할 수 있는 보안 위협 등을 고려해서 동영상과 해킹 시나리오의 경우에는 자료집에도 실을 수 없어서 현장에서만 보여드렸습니다.

동영상을 통한 해킹 시연은 먼저 악의적인 공격자가 사람을 혹하게 만들 수 있는 이메일을 스마트폰 사용자에게 보내서 악성코드가 삽입 된 앱 설치를 유도하고, 그렇게 설치된 앱은 한번만 실행해도 스마트폰을 일종의 "좀비폰"으로 만듭니다.

공격자는 i) 스마트폰에 들어 있는 주소록이나 통화 정보 등을 훔쳐갈 수 있습니다. ii) 현재 스마트폰의 위치 정보를 훔쳐서 스마트폰 사용자의 위치를 찾아낼 수 있습니다. iii) 마지막으로, 해커는 감염된 스마트폰을 이용해서 문자메시지를 발송할 수 있습니다. 특히, 특정 사용자에게 다량의 메시지를 발생할 경우에는 마치 DDoS 공격처럼 악용될 수도 있는 만큼 사용자들의 각별한 주의가 필요합니다.

<그림12/13. 세션5-주세홍 팀장님>


8. 세션6 – Security ROI

마지막 세션은 A3SECURITY와 여러가지로 인연이 깊으신 고려대학교 대학원 김휘강 교수님이 맡아 주셨습니다. 보안 관리자들의 가장 큰 고민인 예산 편성을 어떻게 하는 것이 합리적인 방법인지에 대해서 R.O.I(Return on Investment) 측면에서 설명해 주셨습니다.

행사의 마무리 주제로써 정말 좋은 주제였던 것 같습니다. 바쁘신 일정에도 흔쾌히 세션 발표를 맡아주신 김휘강 교수님, 이강신 단장님, 김진섭 차장님께 모두 감사의 말씀을 드리고 싶습니다.



<그림 14. 세션6 - 김휘강 교수님>


9. 마치며

모든 일이 그렇듯이 행사가 끝난 후에는 끝났다는 안도감과 함께 적지 않은 아쉬움이 남습니다. 조금 더 여유 있을 때 더 많이 준비했었으면 하는 생각이나, 더 많은 분들에게 홍보하고 더 많은 분들에게 조금 더 의미 있는 시간으로 만들었으면 하는 아쉬움은 결국 다음 번 행사로 미룰 수 밖에 없게 되었습니다.

다만, "A3SECURITY SMS 2010 – MADE SECURITY"은 제목이나 주제부터 그리고 세션 구성 등등에 예년보다는 조금 더 준비했고, 내년에는 더욱 멋진 행사로 만들어 갈 수 있을 것이라는 기대를 가질 수 있는 것으로 다소나마 위안을 삼아야 할 것 같습니다.

마지막으로, 세션 발표를 해 주신 이강신 단장님, 김진섭 차장님, 김휘강 교수님, 전상미 소장님, 유훈상 팀장님, 주세홍 팀장님께 진심으로 감사의 말씀을 드립니다. 또한 세션 발표를 위한 자료를 다듬고, 부스 운영을 위한 내용을 만드신 현업에 많은 분들 또한 고생하셨고 수고하셨다는 말씀을 남깁니다. 디자인 등의 협조와 당일 행사 진행을 도와주신 STAFF 분들, 그리고 많은 관심을 가져 주신 사장님 이하 임원분들께도 감사의 말씀을 드립니다.

행사 당일 참석해 주셨거나 이후라도 관심 가져주신 언론인 분들에게도 깊은 감사의 말씀을 드리며, 무엇보다도 부족한 행사지만 큰 관심으로 방문해 주신 고객분들께 좀 더 좋은 서비스와 제품으로 보답하고, 이후에 더욱 좋은 자리를 만들어 드리도록 준비하겠습니다.

 

끝으로, 가끔 발음도 꼬이고 어설픈 사회로 진행이 매끄럽지 못했던 점 사과드리고, 뒤풀이 참가도 못하시고 바삐 떠나신 분들 우리 K모 대리의 버라이어티한 모습을 못 보신 것에 심심한 유감을 보냅니다.

 

감사합니다.

Sysinternals Tools 자동 업데이트 스크립트

그외 2010. 7. 30. 09:31 Posted by TEAMCR@K

Microsoft 의 Sysinternals 에서 제공되고 있는 Tool들은 취약점 점검할시에, 보안 점검할시에 매우 유용하게 사용되고 있습니다.
Tool 들이 워낙 많기 때문에 각각에 대한 버전 업데이트 정보를 얻는것도 쉽지 않죠.

아래는 Sysinternals 관련된 툴 (SysinternalSuite 라고 하지요) 들을 이전 다운로드 받은것과 비교해서 업데이트 된 부부분은 자동으로 교체해주는 배치 파일 스크립트 입니다.

URL  정보 : http://sysadmingeek.com/articles/batch-script-to-auto-update-sysinternals-tools/

 @ECHO OFF
TITLE Sysinternals Updater
ECHO Sysintenals Updater
ECHO Written by: Jason Faulkner
ECHO SysadminGeek.com
ECHO.
ECHO.

SETLOCAL ENABLEDELAYEDEXPANSION

SET SysInternalsTools="%Temp%\SysInternalsTools.tmp.txt"
SET CurrentTasks="%Temp%\CurrentTasks.tmp.txt"
SET StartWhenFinished="%Temp%\StartWhenFinished.tmp.txt"

ECHO Detected directory: %~dp0
%~d0
CD %~p0
ECHO.
ECHO.

ECHO Downloading current tool list...
SET LiveShare=\\live.sysinternals.com\tools
START /MIN %LiveShare%
DIR %LiveShare% /B > %SysInternalsTools%
TASKLIST > %CurrentTasks%
ECHO ;Terminated tools > %StartWhenFinished%

ECHO.
ECHO Updating installed SysInternals tools
FOR /F %%A IN ('DIR /B') DO (
 FOR /F "usebackq" %%B IN (%SysInternalsTools%) DO (
  IF /I [%%A]==[%%B] (
   ECHO Updating %%A
   FOR /F "usebackq" %%C IN (%CurrentTasks%) DO (
    IF /I [%%A]==[%%C] (
     ECHO %%C is currently running, killing process - queue restart
     ECHO %%C >> %StartWhenFinished%
     TASKKILL /IM %%A /T /F
    )
   )
   XCOPY %LiveShare%\%%B %%A /Y
   ECHO.
  )
 )
)

ECHO.
ECHO Resuming killed tasks
FOR /F "usebackq skip=1" %%A IN (%StartWhenFinished%) DO (
 ECHO Starting %%A
 START "Sysinternals Tool" "%%A"
)

IF EXIST %SysInternalsTools% DEL %SysInternalsTools%
IF EXIST %CurrentTasks% DEL %CurrentTasks%
IF EXIST %StartWhenFinished% DEL %StartWhenFinished%

ENDLOCAL

ECHO.
PAUSE





Useful sites for Pen-Test

그외 2010. 7. 14. 14:13 Posted by 알 수 없는 사용자

모의해킹 시 유용한 사이트 몇 곳을 소개합니다.

1. 플랫폼별 취약점 정리 사이트
본 사이트는 공개된 취약점을 Apple, Debian, MS 등의 플랫폼 별로 카테고리를 정리해 놓은 곳입니다.
특정 플랫폼의 취약점 또는 최신 취약점 업데이트 현황을 살펴보기 좋겠네요..^^

URL) http://vul.hackerjournals.com/


2. Python tools for penetration testers
파이썬으로 만들어진 각종 모의해킹 툴 모음 사이트입니다.
Network, Debugging and reverse engineering, Fuzzing, Web 등의 카테고리로 나뉘어져 있어, 테스트 용도에 맞는 툴을 찾을 때 유용할 것 같습니다. ^^

URL) http://dirk-loss.de/python-tools.htm

한글 문서 파일형식 (hwp) 공개

그외 2010. 6. 30. 22:36 Posted by 알 수 없는 사용자

관련 글...
http://www.bloter.net/archives/34064 (HWP 파일 형식 ‘무엇을, 어떻게, 왜’ 공개했나)

내용 공개 게시물...
http://www.haansoft.com/notice.noticeView.do?targetRow=1&notice_seqno=33

한글과 컴퓨터에서 hwp 파일형식을 공개하였습니다.

hwp 형식과 pdf판으로 다운로드 받을 수 있게 되어 있네요.

[Hot] 안드로이드 입문서 공개!

그외 2010. 2. 24. 16:40 Posted by TEAMCR@K

칸드로이드(Korea Android) 커뮤니케이션에서 발행한 안드로이드 입문서 PDF파일 원본을 공개했습니다..--)b

아주 감사합니다!!^^~)

http://www.kandroid.org/board/board.php?board=tnshopqna&command=body&no=138


게시물 내용
------------------------------------------------------------------------------------------------------
안드로이드 입문서 3rd Edition을 발행합니다.
 
칸드로이드가 영어로만 씌어져 있던 Android Dev. Guide를
한글로 번역해 책으로 출간하고, 웹으로 오픈하고,
PDF 파일로 공개하는 것은 확산과 공유의 정신을 고양하기 위해서입니다.

베이직&클래식한 안드로이드 입문서를 기반으로
개발자들이 보다 발전적이고 창조적인 대화를 나눌 수 있기를 희망합니다.
" 가치 공유의 확산 ! "
이것이 칸드로이드가 안드로이드 입문서를 공개하는 단 하나의 이유입니다.
 
많은 분들에게 도움이 되길 바라며..
더불어 함께 이 일을 해 나가고 있는 모든 칸드로이드 운영진들께 항상 감사합니다.
------------------------------------------------------------------------------------------------------

VoIP 사용자 인증 암호 무력화 연구

그외 2009. 10. 19. 09:50 Posted by 알 수 없는 사용자

VoIP 사용자 인증 암호 무력화 연구

(SIP 인증 암호 Bruteforcing 기법)


kerz@a3security.com
(A.K.A k3rz)


※ 본 연구 문서는 신규 취약점 또는 보안 기술 우회 기법에 관한 문서로써 악용될 우려가 있는 상세 공격 코드 및 내용은 제한합니다.


I. VoIP 사용자 인증 암호 무력화 연구 개요

1. 개 요

"VoIP 사용자 인증 암호 무력화 연구"는 VoIP 기반 환경에서 사용되는 UA, Password 기반 인증 체계와 해쉬 암호화에 사용되는 nonce 등의 값을 패킷 캡쳐와 BruteForcing으로 무력화 시키는 기법입니다.

2. 공격유형: 패킷 캡쳐, 원격 접속

3. 공격영향도: 보통

4. 시스템 환경: VoIP PBX



II. 위험 분석

1. 위험 분석
VoIP는 현재는 물론 미래에서도 지속적으로 가장 많이 사용될 인터넷 기반의 전화입니다.
SIP 사용자 인증은 매 접속마다 변경되는 해쉬 알고리즘을 이용하여 암호 크랙을 불가능하도록 설계하였습니다. 그러나 패킷캡쳐와 사전파일을 이용한 BruteForcing 공격을 통해 암호 무력화가 가능합니다 이로 인해 비인가 사용자가 인가된 사용자의 UA를 이용할 수 있습니다.


III. 대응 방안

1. 비밀번호 생성 관리
SIP 인증 암호 BruteForcing 기법은 비밀번호 복잡도가 근본이 되는 기술이기 때문에 근본적으로 비밀번호 생성시 어렵게 하는 대응으로 보안성을 높일 수 있습니다. 간단하게 알파벳 대소문자, 숫자 혼용, 최소 8자리 이상, 사전에 등록된 단어, 혹은 속어, 사투리 등의 사용 금지 등으로 설정하도록 하여 대응할 수 있습니다.

모든 계정에 대해여 공격자가 쉽게 추측할 수 없도록 비밀번호를 설정해야 합니다. 다음은 SAMS Institute에서 권고하고 있는 패스워드 정책입니다. 다음 항목을 참고하여 비밀번호를 설정하도록 합니다.

- 알파벳 대소문자를 혼용하여 사용
- 숫자 및 특수문자 포함
- 사전에 등록된 단어, 혹은 속어, 사투리 등의 사용 금지
- 개인 정보나 관련된 정보를 포함 금지 (예, 이름, 회사, 제품 이름)
- 비밀번호는 온라인 상에 별도 저장 금지
- ID와 비밀번호의 동일한 문자가 4글자 이상 있으면 안됨


2. 암호화 통신
VoIP 인증에 대한 대응방안으로 SIPS(SIP over TLS)와 SRTP(Secure RTP)를 권고합니다.



IV. 세부내역

1. SIP 인증 암호 BruteForcing 시나리오


(1) 사용자와 VoIP PBX간의 패킷 수집
(2) 수집된 패킷에서 해쉬 알고리즘에 필요한 정보 추출
(3) 사전파일을 이용한 BruteForcing으로 비밀번호 획득


다음은 피해자의 패킷을 수집한 화면힙니다.


                                                           [그림 1] 패킷 수집 확인


---해당 상세내역은 악용할 우려가 있어 생략합니다---


다음은 피해자 암호를 추출한 화면입니다.


                                                 [그림 2]  피해자 암호 추출




※ 현재 ㈜에이쓰리시큐리티에서 테스트 및 분석 중에 있으며, 이 문서는 계속 업데이트될 것입니다. 본 문서는 보안취약점으로 인한 피해를 최소화하는 데 도움이 되고자 작성되었으나, 본 문서에 포함된 대응방안의 유효성이나 기타 예상치 못한 시스템의 오작동 발생에 대하여서는 ㈜에이쓰리시큐리티에서는 일체의 책임을 지지 아니합니다.

Snort 2.8.5 Release

그외 2009. 9. 18. 09:05 Posted by TEAMCR@K

URL : http://vrt-sourcefire.blogspot.com/2009/09/snort-285-release.html

We warned you in the August Vulnerability Report that Snort 2.8.5 was almost ready to be released. Well, today is the day. Snort 2.8.5 is now available for download.

All VRT Certified rule releases will now be 2.8.5 compliant and we will cease to support 2.8.4 (in 90 days) in favor of this latest release. Here are some highlights from the release notes:

  • Ability to specify multiple configurations (snort.conf and everything it includes), bound either by Vlan ID or IP Address. This allows you to run one instance of Snort with multiple snort.conf files, rather than having separate processes. See README.multipleconfigs for details.
  • Continued inspection of traffic while reloading a configuration.
    Add --enable-reload option to your configure script prior to building. See README.reload for details.
  • Rate Based Attack Prevention for Connection Attempts, Concurrent Connections, and improved rule/event filtering. See README.filters for details.
  • SSH preprocessor is no longer experimental
  • Multiple performance improvements
  • 룰셋은 테스트 후에 상세하게 다시 작성해야 하겠습니다.^^)

    암호화 관련 추천 URL 입니다.

    그외 2009. 9. 17. 14:36 Posted by TEAMCR@K


    1. 암호학의 역사와 알고리즘들 - http://www.quadibloc.com/crypto/jscrypt.htm

    2. 비즈네르 암호 - http://rainmasta.egloos.com/4057477

    3. Caesar cipher - http://en.wikipedia.org/wiki/Caesar_cipher

    4. The Beginner's Guide to Cryptography - http://www.murky.org/blg/category/cryptography/

    5. DES - http://csrc.nist.gov/publications/fips/fips46-3/fips46-3.pdf

    6. 소인수 분해 참고 - http://primes.utm.edu/

    7. 암호관련 논문과 암호학자 사진들 - http://www.pbcrypto.com/index.htm