IT 그리고 정보보안/Knowledge base 227

어셈블리어 - LEA 명령어

LEA 명령에 대해 알아보겠음. 지정한 주소값을 가져오는 명령어로, 보통 값을 가져와야 하는 경우에 쓰인다. MOV와는 다르다. 레지스터에 주소값을 저장하고 싶을 때 사용되는 명령어임. 예제를 통해 확실한 개념을 알아보겠음. 디어셈블을 위한 소스는 위와 같음. .data 부분은 데이터 세그먼트를 지정하여 1234값을 저장하는 것이다. push ebp mov ebp, esp sub esp, 4h :함수의 프롤로그와 스택 한칸을 할당한다. mov dword ptr [ebp-4], 00402000h : [ebp-4] 위치에 0x00402000 값을 저장한다. 여기서 0x00402000은 앞에 데이터 세그먼트에 저장된 1234의 주소값이다. mov eax, dword ptr [ebp-4] : [ebp-4] 위치..

어셈블리어 - MOVZX 명령어

MOV 명령의 확장 명령인 MOVZX를 알아본다. 이전에 MOV명령을 설명할 때 같은 크기의 데이터 끼리만 복사가 된다고 했는데.. MOVZX 명령은 첫번째 데이터가 두번째 보다 크기가 커도 복사가 된다. 대신 크기가 안맞으니 남은 공간은 0으로 체워짐.. 컴파일과 오브젝트 파일 링크하는 방법은 이전 mov명령어 포스트 참고 push ebp mov ebp, esp sub esp, 4h : 아까도 설명 했듯이.. 함수의 프롤로그와 스택 한칸의 크기를 할당한다. mov dword ptr [ebp-4], 0000ffffh : 할당된 스택에 0xFFFF 값이 저장된다. mov bx, word ptr [ebp-4] : BX부분에 FFFF가 복사된다. 원래 ebx값이 7FFD0000이었는데 7FFDFFFF이 되었음..

어셈블리어 - MOV 명령어

MOV 명령 데이터를 복사하는 명령어다. move라고 착각하여 이동시킨다고 생각할 수 있는데 이거는 복사하는 거다. MOV를 쓸 때 몇가지 제한사항이 있으니 참고하자. * 레지스터에서는 같은 사이즈의 데이터끼리만 복사 가능하다. * 메모리에서 메모리로 복사가 안된다. 고로 레지스터를 통해서 복사해야한다. * 세그먼트 레지스터의 내용은 범용 레지스터가 아닌 곳으로 이동 가능. 반대는 불가 mov는 " mov eax, ebx " 형태를 가진다. ebx의 값을 eax로 복사한다. 이런 뜻이다. 직접 예제를 통해서 mov에 대해 더 알아보자. mov에 관한 예제 어셈블리 코드이다. 설명이 필요하니 하겠음 .code : 코드가 시작되는 부분 main proc push ebp : 기존 EBP 주소를 스택에 백업 m..

어셈블리어 개요

. Assembly(어셈블리) 란? -> 기계어와 1:1로 대응되는 저급 프로그래밍 언어이다. 어셈블리 언어를 기계어 형태의 오브젝트 코드로 해석해주는 어셈블러에 의해 해석된다. 2. 어셈블리 기본 정리 - segreg : 16비트 세그먼트 레지스터 - mem : 메모리 - label : 지정된 레이블 - imm : 즉시값(상수) - reg : 일반 범용 레지스터 어셈블리 명령어 앞에 E가 많이 붙는데. 기존 16비트에서 32비트 아키텍쳐가 되면서 범위가 확장된 거임 (Extended) 명령어를 보기 전에 일단 프롤로그와 에필로그가 뭔지 좀 알아보자. Prologue(프롤로그) : 스텍 프레임을 잡아주는 것. 즉 함수가 호출 될 때 프롤로그라고 한다. -> push EBP ebp의 값을 push하고 es..

정규표현식 (Regular Expression)

1. Reuglar Expression 개념 정규표현식에 대해 알아봅시다. 먼저 위키피디아에 적혀있는 정규표현식의 개념은 아래와 같다. " 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어" 쉽게 말해 문자열의 검색, 치환, 추출을 위한 하나의 패턴이라고 생각하면 된다. 주로 프로그래밍 언어와 문서편집기 등에서 쓰인다. 여담으로 나는 Snort 룰 설정에 정규표현식이 사용되어 공부하는 것이다. 꼭 알아야 함 언어별, 프로그램별로 조금씩 규칙의 차이점이 있지만 거의 비슷하다. 14 위와 같이 생겨먹은게 정규표현식이다. 진짜 극혐;;; 정규표현식 자체가 CRLF를 허용하지 않아서 한줄에 저렇게 다 적어야 한다. 토쏠리게 복잡하다. 하지만 정규표현식을 사용하지 않으면 문자열 처리를 수행하려면 ..

리얼모드 메모리 주소 표기

일반적으로 0x07C00 번지라고 하면 0x07C0:0000, 0x0000:07C0. 0x0700:0C00 등 다양한 주소로 표현이 가능하다. 여기서 0x07C0 은 물리 주소를 나타내는 것이고, 0x07C0:0000 은 논리 주소라고 한다. 일반적으로 16비트 메모리 관리 기법에서 세그먼트 레지스터의 값에 16을 곱하고 거기에 옵셋을 더하면 물리주소에 맵핑이 된다고 된다. 쉽게 말해 콜론을 기준으로 왼쪽이 offset 이고, 오른쪽이 세그먼트 레지스터 값인데, 이걸 물리주소에 맵핑하려면 레지스터 값 x 16 즉, 0x1000 이면 0x10000 이 되는 것이고, 거기에다가 offset값을 더하면 된다. 요지는 저 콜론이 있으면 논리주소라는 것

악성코드의 종류

악성코드에 어떠한 종류들이 있는지 한번 알아보자. 일단 크게크게 나누면 아래 그림과 같이 됩니당. 기생할 호스트가 필요한 악성코드와 독립적으로 동작하는 악성코드, 이렇게 크게 2분류로 나눌 수 있다. 사실 이렇게 악성코드의 종류를 구분하기 보다는 각 악성코드들의 개념을 익히는게 바람직하지만. 뭘 하든 기본 분류는 하고 넘어가야 하기에.. 요즘은 하도 악성코드 기술이 고도화 되어.. 이렇게 분류하는게 의미가 없다. 그럼 하나하나씩 알아보자. 1. Virus (바이러스) 프로그램에 내부에 심어지는 악성코드, 독립적으로 동작할 수 없다. 프로그램 감염, 자기 복제가 특징이다. 통상 4가지 단계를 거쳐 악의적인 활동이 전개된다. * Dormant phase (휴면 단계) - 바이러스가 놀고 있다. * Propa..

스트림 암호 (Stream Cipher)

스트림 암호란, 데이터의 흐름(스트림 이라고 하죠)을 순차적으로 처리해가는 암호 알고리즘의 통칭이다. 몇가지 큰 특징들이 있으니 한번 보자. - 속도 : 블록암호화 보다 빠르다. - 보안 : 블록암호화 보다 약하다. - 음성, 영상 스트리밍 등 실시간으로 이루어지는 통신에 사용된다. - 1비트씩 암호화 하기 때문에 하드웨어적인 shift register 방식을 많이 쓰고 수학적 분석이 가능 - 암호문 1비트가 왜곡되면 평문도 1비트만 왜곡된다. - 흐름에 따라 순차적으로 처리하기 때문에 내부상태를 갖고 있다. 이 스트림 암호는 2가지 종류로 나뉜다. 1. 동기식 스트림 암호 - 스트림 암호의 난수열을 암호화할 입력값과 독립적으로 생성하는 경우이다. - 암호화와 복호화에서 상호 동기화가 필요하다. (키와 ..

충돌 회피성 (=충돌 저항성)

충돌회피성(=충돌저항성) 이란? 뭐 충돌 저항성과 같은 말이다. birthday attack에 대해 언급한적이 있는데, 이게 해시 충돌에 관련된 공격이다. 해시는 일방향성을 가지므로 이론적으로는 함수 반환값으로 입력값을 알 수 없어야 한다. 근데 해시 충돌이 일어나는 가능성이 존재한다. (당근.. 해시값이 뭐 무에서 유를 창조한 그런 값이 아니므로) 그 해시 충돌에 대한 성질을 말한다. 여기엔 두가지가 있다. * 강한 충돌회피성 H(X) = H(Y) 인 서로 다른 임의의 두 입력 X, Y 를 찾는 것은 계산적으로 어려워야 한다. * 약한 충돌회피성 X가 주어졌을 때 H(X) = H(Y) 인 X!=Y 것을 찾는 것은 계산적으로 어려워야 한다. 두개 차이는 값이 하나 주어지냐 안주어지냐 그 차이인듯. 하나 ..

PGP (Pretty Good Privacy)

e-mail 서비스 보안에 사용되는 소프트웨어인 PGP에 대해 알아보자. 일단 오픈소스다. Phil Zimmermann 이라는 사람이 만들었다. RFC 3156에 표준화 되어있다. 소프트웨어 이지만 암호화 복호화 하는데 사용되기 때문에 암호화 카테고리에 적었다. PGP는 여러가지 서비스를 제공한다. 1. 전자 서명 : DSS/SHA 또는 RSA/SHA 로 전자서명이 가능하다. 2. 메세지 암호화 : cast-128, IDEA, 3-DES 로 메세지 암호화가 가능하다. 3. 1회용 세션키 생성 : Diffie-Helmann 또는 RSA로 키분배를 한다. 랜덤값 4. 메세지 압축 : ZIP으로 메세지를 압축시킬 수 있다. 5. 이메일 호환 : radix-64로 바이너리를 아스키로변환이 가능하다. 6. 세그먼..

반응형