전체 글 219

AES

이전에 DES에 대해서 보았다. DES는 56bit key를 사용하여 보안성이 떨어지며 느리다. 따라서 새로운 블락 암호화 기법인 AES를 사용한다. AES는 key size가 128,192,256중 하나를 사용한다. AES의 구현 기준은 1. 모든 공격에 저항성을 가지며 2. 속도가 빠르고 compactness 하며 3. 심플한 디자인이다. AES의 원래 이름은 라인달이라고 불렸다. key길이는 128/192/256중 하나이며 128bit 단위의 블락 사이즈를 가지고 블락 암호화를 한다. 그리고 iterative 구조이다. 이는 앞서 배운 feistel 구조와 차이점이 있다. iterative구조의 조금 더 정확한 표현은 add and round이다. 그리고 모든 공격에 대해 안전하며 8,16,32bi..

Infomation_Security 2021.08.07

IP주소 추적하기

* 참조 제대로 된 ip주소를 획득할 수 있다면 해당 ip에 해당하는 위치를 찾는것은 어렵지 않은 일이다. (구글에 ip위치 찾기 정도만 검색해도 가능) 하지만 proxy,VPN등을 통한 ip의 변경이 매우 쉽기때문에 ip에 해당하는 그 위치가 내가 찾는 곳이 맞는지 확신할수 없다. 그리고 해당 서버,사이트를 운영하는 입장이 아닌경우 application level에서 ip정보를 얻는것은 어렵다. 1. 메일 이용하기 공격 대상의 ip주소를 추적하는 다양한 방법 중에서 메일을 통한 ip 주소 추적을 가장 먼저 살펴보자. 메일의 ip주소를 추적하여 확인하는 일은 실무에서 생각보다 많이 사용되고 유용한 경우가 많다. 대부분 메일을 읽을 때 제목과 보낸 사람, 보낸 시간, 본문과 첨부 파일 정도를 확인한다. 하..

Network Security 2021.08.06

윈도우 hosts 파일 실습

세상 모든 것에는 그것을 가리키는 무언가가 있다. 그리고 그것을 가리키는 말이 오직 하나만 있는 것은 아니다. 사람을 예로 들면, 우선 이름이 있고, 회사에 다닌다면 사번이 있을 수 있으며, 친한 친구들 사이에서는 별명이 있을 수도 있다. 이름, 사번, 별명 등의 '명칭'은 각각 목적이 있고, 용도도 조금씩 다르다. 인터넷이라는 광활한 네트워크 환경에도 이러한 명칭이 있다. 초기의 인터넷은 ip주소만 사용해 인터넷을 이용했다. 다시 말하면, 현재의 www.hanbit.co.kr과 같은 도메인 네임이 없었다. 그렇다고 ip주소를 직접 입력한 것은 아니다. PC의 hosts파일에 도메인 대신 '별명'과 같은 원하는 명칭을 ip주소와 매칭 시켜 인터넷을 사용했다. 하지만 hosts 파일은 각자가 임의로 정한 ..

Security_lab 2021.08.05

로그 분석과 설정

1. 로그 관련 기본 개념 로그는 공격자를 추적하는데 매우 용이하다. 윈도우와 리눅스의 로그 체계는 상당히 다르다. 윈도우는 이벤트라는 중앙 집중화된 로그를 수집하여 저장하지만, 리눅스는 로그를 여러 곳에 산발적으로 저장한다. 윈도우는 로그가 중앙 집중화되어 관리하기 편하다. 하지만 공격자가 한 로그만 삭제하면 되므로 삭제 위험도 크다. 또 로그에 대한 보안 수준이 낮은 편이다. 이에 반해 여러 곳에 저장된 리눅스 로그는 초보자는 찾기조차 쉽지 않다. 또 공격자도 로그를 모두 찾아 지우기 어렵다. 따라서 윈도우보다 리눅스에서 추적자를 찾는 것이 좀 더 수월할 수 있다. 리눅스의 모든 로그는 지우기 어렵지만, 해커를 다양한 측면에서 추적할 수 있기 때문이다. 로그를 본격적으로 살펴보기에 앞서 몇 가지 관련..

Security_lab 2021.08.04

해킹 침해사고 대응절차

해커가 침투했다고 하면 가장 먼저 무엇을 해야 할까? 침해사고에 어떻게 대응해야 하는지 그 절차는 사람마다 다를 것이다. 이는 상황의 심각성과 서비스 특성이 모두 다르기 때문이다. 따라서 경우에 따라 상황을 잘 판단하여 적절히 대응해야 할 것이다. 1. 메모리 덤프 해커가 침투한 흔적만 있을 때와 현재 해커가 침투했을 때 대응하는 절차는 조금 다르다. 우선 현재 해커가 침투했다면 메모리를 덤프 한 후 이를 CD-ROM처럼 다시 쓰기가 불가능한 백업 매체에 저장한다. 시스템에 침입한 해커를 직접 확인할 수 있는 로그를 먼저 백업하지 않는 이유는 로그의 위조 및 변조가 너무 쉬워 법적 효력이 거의 없기 때문이다. 가장 강력한 법적 효력은 메모리 덤프이다. 따라서 법적 증거물로 사용할 수 있도록 위조 및 변조..

Security_lab 2021.08.03

백도어 탐지 순서와 대응책

1. 현재 동작 중인 프로세스 확인 현재 프로세스를 확인하여 백도어가 아닌 정상 프로세스를 아는 것도 매우 중요하다. 대부분 백도어 자체가 티가 나게끔 이름을 짓지 않기 때문이다. 따라서 윈도우와 리눅스 시스템 등 정상 프로세스를 외워 두면 좋다. 특히 윈도 프로세스는 이름을 어느 정도 인지하고 있으면 윈도우 웜이나 바이러스, 백도어를 대응하는 데 큰 도움이 된다. 다음 아래 프로세스 20개는 윈도우 시스템이 동작하는 기본 프로세스이다. 익혀 두면 여러 가지로 유용한데, 특히 웜 바이러스나 백도어가 가장 애용하는 것은 Csrss와 Svchost프로세스이다. - Csrss.exe(=client/server Runtime subsystem) : 윈도우 콘솔을 관장하고, 스레드를 생성, 삭제하며, 32비트 가..

Security_lab 2021.08.02

백도어

1. 백도어와 트로이 목마 먼저 백도어의 종류를 살펴보자. 백도어 종류는 매우 다양하여 시스템과 네트워크의 모든 것을 사용해서 만든다고 생각해도 된다. 이는 세분화하면 '트로이 목마'와 '백도어'로 나눌 수 있다. 그렇다면 트로이 목마와 백도어의 차이점은 무엇일까? 사용자가 의도하지 않은 코드를 정상적인 프로그램에 삽입한 것을 트로이 목마라고 한다. 트로이 목마와 비슷한 종류로 스파이웨어가 있다. 스파이웨어는 설치된 시스템 정보를 주기적으로 원격지의 특정한 서버로 보내는 프로그램이다. 백도어는 트로이 목마와 조금 다르다. 백도어의 원래 의미는 운영체제나 프로그램을 만들 때 정상적인 인증 과정을 거치지 않고, 운영체제나 프로그램 등에 접근할 수 있도록 만든 일종의 통로이다. 이는 트랩 도어라고도 하며, 개..

Security_lab 2021.07.30

포맷 스트링 공격

포맷 스트링 공격은 버퍼 오버플로 공격과 매우 유사하다. 그래서 많은 사람이 포맷 스트링 공격과 버퍼 오버플로 공격을 정확히 구분하지 못한다. 보통 다음 코드처럼 buffer에 저장된 문자열을 printf함수를 사용하여 출력한다. % s 같은 문자열을 가리켜 포맷 스트링이라고 한다. 포맷 스트링의 종류는 다음과 같다. 포맷 스트링 문자를 이용하지 않고, printf 같은 함수를 사용하면 문제가 발생할 수 있다. 다음과 같은 코드를 작성하고 컴파일하여 실행해보면 결과는 아래와 같다. wishfree 외에 5798b228이라는 숫자를 출력한다. 이 숫자는 wishfree문자열이 저장된 다음 메모리에 존재하는 값으로 0x5798b228d을 의미한다. gdb에서 이 값을 확인해보자. &buffer인 0x7fff..

Security_lab 2021.07.29

버퍼 오버플로 공격 대응책

버퍼 오버플로 공격이 너무 흔하고 수많은 취약점을 발견하면서 운영체제도 자체적으로 대책을 세우기 시작했다. 1. 안전한 함수 사용 버퍼 오버플로 공격에 대응하는 가장 쉽고 효과적이면서 확실한 방법은 버퍼 오버플로에 취약한 함수를 사용하지 않는 것이다. 일반적으로 알려진 버퍼 오버플로 공격에 취약한 함수는 다음과 같다. - strcpy(char *dest, const char *src) - strcat(char *dest, const char *src) - getwd(char *buf) - gets(char *) - fscanf(FILE *stream, const char *format) - scanf(const char *format,...) - realpath(char *path, char reslov..

Security_lab 2021.07.28

gdb를 통한 heap buffer overflow

힙은 프로그램을 실행할 때 동적으로 할당한 메모리 공간이다. malloc계열의 HeapAlloc, HeapFree, Malloc, free, new, delete 등 함수로 제어하며, BSS라고도 한다. 힙은 스택과 반대로 메모리의 하위 주소에서 상위 주소로 영역이 커진다. 사용할 예제는 buf두개를 heap에 할당하고 buf1과 buf2의 차이를 구해서 넘게 버퍼를 사용 했을때 오버 플로우가 일어나는 상황을 보는 것이다. heap01.c이다 이는 조금 더 gdb로 분석하기 쉽게 define을 값으로 바꾸고 printf 같은 부분을 삭제하였다. 다음과 같이 컴파일한다. 실행 시의 결과는 다음과 같다. memset(buf1, 'B', (u_int)(address_diff+OVERSIZE))부분에서 buf2..

Security_lab 2021.07.27