본문 바로가기

분류 전체보기

(10)
TTPs란 TTPs란? TTPs는 Tactics, Techniques, and Procedures의 약자로, 공격자가 목표를 달성하기 위해 사용하는 접근 방식, 기술, 그리고 실행 방법을 말합니다. TTPs는 사이버 보안과 위협 인텔리전스 분야에서 공격자를 이해하고 방어 전략을 세우는 데 중요한 개념입니다. TTPs는 Mitre Attack의 TTPs를 가르킵니다.  빨간 박스에 있는 부분이 전술( Tactics )로 공격자가 공격 과정을 나타냅니다. 아래 노란박스의 있는 부분은 기술( Techniques )로 공격 과정에서 수행하는 기술들을 나타냅니다.  TTPs가 생겨난 배경은?사이버 보안이 점차 발전하고, 공격자들의 행위가 더 정교해짐에 따라 체계적으로 공격을 이해하고 방어를 강화하기 위해 등장한 개념입니다...
netfilter hook을 이용한 fw 만들기 - 3 netfilter hook을 이용해 특정 IP에 해당 장비로 ssh 패킷을 차단해볼 예정입니다. 차단할 IP와 포트 등등이 있으면 hook함수에서 return을 NF_DROP해주면 됩니다. 먼저 IP를 string으로 바꿔줘야한다 그러기 위해서 아래와같이 snprintf를 이용해 string으로 받아준다. char src_ip_str[16]; char dst_ip_str[16]; snprintf(src_ip_str, 16, "%pI4", &ip_header->saddr); snprintf(dst_ip_str, 16, "%pI4", &ip_header->daddr);  이렇게 해줬으면 이제 조건문으로 IP와 Port를 검사해주면 된다.조건문에 아래..
netfilter hook을 이용한 fw 만들기 - 2 오늘은 FW만들기 위해 IP와 Port를 출력해볼 것입니다.IP와 Port를 출력할 수 있다면 원하는 IP또는 Port를 차단할 수 있을것입니다. 다음 포스팅은 sqlite를 통해 IP정보와 Port정보를 읽어와 IP와 Port를 확인하고 차단 해볼예정입니다. 먼저 netfilter hook으로 받아온 skb에서 tcp인지 udp인지 protocol에 따라 나누어줍니다.  static unsigned int my_hook_function(void *priv, struct sk_buff *skb, const struct nf_hook_state *state) { struct iphdr *ip_header; // IPv4 프로토콜인지 확인 if (skb->protocol == htons(E..
netfilter hook을 이용한 fw 만들기 안녕하세요 금일 포스팅 할 내용은 리눅스 커널 모듈을 이용해 netfilter hook을 사용하는 방법입니다. netfilter란 커널의 네트워크 프레임워크 중 하나로 hook을 제공하여 원하는 패킷을 drop할 수 있다. netfilter hook등록 netfilter는 hook을 등록하고 등록해제하는 함수가 있다. nf_register_hook 을 이용해 설정한 nf_hook_ops 구조체를 넘겨주면 등록이 됩니다. 해당 함수를 이용하여 함수를 등록하고 해제를 한다. netfilter hook의 예시입니다. #include #include #include #include static struct nf_hook_ops my_nf_ops; static unsigned int my_hook_function..
리눅스 커널 모듈 안녕하세요 오늘은 kernel 드라이버에 대해 포스팅했습니다. 앞으로도 kerenl 드라이버에 대해 계속 포스팅 할 예정입니다. 최종적으로 목표는 linux kernel 모듈을 이용한 IPS를 제작해보는게 최종목표입니다. 오늘은 간단하게 리눅스 커널 모듈을 어떻게 로드하고 간단하게 printk로 dmesg를 출력해볼 예정입니다. 디렉터리 구조 kernel_module/ ├── hello.c └── Makefile Makefile obj-m += hello.o all: $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules clean: $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean..
ubuntu 22.04 커널 빌드 안녕하세요 오늘은 ubuntu 22.04.3 버전에서 커널 빌드 방법을 포스팅했습니다. 빌드 환경 : virtualbox, ubuntu 22.04.3 버전 필요한 패키지 sudo apt update sudo apt install build-essential libncurses-dev bison flex libssl-dev libelf-dev fakeroot 1.현재 커널버전 우선 현재 ubuntu 22.04.3버전의 커널을 확인해줍니다. 1-1. 커널 버전 확인 방법 uname -r 1-2. 커널 버전 읽는법 커널 버전을 볼때 아래 그림을 생각하면 보면 좀 더 자세하게 알 수 있습니다. 2. 커널 설치 minor 버전이 같은 커널버전을 다운 받을 생각입니다. 2-1. 커널 site https://www...
암호 공격 암호 공격 방법은 크게 4가지로 분류할 수 있다. 1. 암호문 단독 공격 COA(Cipher text Only Attack)라고 부르며 암호문 하나만 가지고 공격이다. 암호문을 얻어 평문과 키를 찾는 것이 목표이다. 암호문에서 통계적 특성을 이용하거나 문장의 특성을 이용하여 해독을 한다. 2. 기지평문공격 KPA(Known Plain text Attack)라고 하며 해당 공격은 양자간의 통신 중 평문과 평문을 암호화한 암호문을 얻을 수 있을때 가능한 공격이다. 해당 공격은 키를 찾는것이 목표이며 이다. 3. 선택 평문 공격 CPA(Chosen Plain text Attack)라고 하며 해당 공격은 공격자가 언제든지 암호장치에 언제든지 접근할 수 있어 원하는 평문을 암호문으로 만들 수 있어 암호 알고리즘과..
대칭키 알고리즘 대칭키 암호화 알고리즘 : 암호화와 복호화에 필요한 키가 같은 암호화 알고리즘을 뜻한다. 비밀키 암호화라고도 한다. 대표적으로 대칭키 암호화 알고리즘으로는 DES, AES,ARIA,SEED(국내개발) 등이 있다. 또한 대칭키 암호화 알고리즘 구조는 대표적으로 2가지가 있다. 1. 스트림암호 일반적으로 스트림 암호는 1bit씩 난수를 생성하고 그 난수와 암호화할 평문과 xor 연산을 하여 자료를 얻는다. 스트림 암호에서도 2가지 방법으로 나뉘는데 동기적 스트림 암호화와 자기(비)동기적 스트림 암호화가 있다. 1) 동기적 스트림 암호화 동기식 스트림 암호는 후속암호문에 영향을 주는 스트림암호이다. 2) 자기(비)동기적 스트림 암호화 비동기식 스트림암호는 후속 암호문에 아무런 영향을 주지 않는 스트림 암호이다..
악성코드 분석을 위한 함수 호출 규약 함수를 호출하기 위한 과정인 함수 프롤로그와 함수를 호출 후 원래주소로 돌아가기 위한 함수 에필로그가 있다 함수 호출규약은 어셈블리어에서 함수를 호출하는 방법이며 약속이다. 함수에는 함수 stack 영역이 따로 존재한다. 함수 프롤로그 함수를 호출하기 위해 stack에 사전 작업이 필요하다.이걸 함수 프롤로그라고 부른다 새로운 함수가 사용할 stack공간을 할당해 줘야한다. 기존에 사용하던 stack의 ebp 주소를 push로 스택 위에 넣고 ebp에는 현재 esp 주소로 변경한다. push ebp mov ebp,esp 호출 함수 스택 SFP(new ebp) ret(old ebp) 2 1 함수 에필로그 함수를 실행 한 후 함수가 호출되기 전 주소로 돌아가기 위한 과정이다. 이과정에서 esp의 주소를 eb..
악성코드 분석을 위한 어셈블리어(1) 악성코드 분석을 위해 어셈블리어를 많이 알수록 좋지만 처음 배우는 입장에서 힘들고 지치기 쉽다. 그래서 악성코드 분석을 위해 가장 중요하고 기초적인 내용만 다룰려고 한다. 악성코드를 분석하기 전에 어셈블리어가 무엇인지, 명령어,스택, 함수 호출규약을 최소한 알아야한다. 1. 어셈블리어란? 어셈블리어는 기계어와 1대1 대응이 되는 프로그래밍 언어이다. 사람이 알아보기 힘들고 사람의 언어와 매우 달라 저급 프로그래밍 언어라고도 한다. 고급언어인 c언어로 된 파일을 컴파일 하면 어셈블리어가 되고 어셈블리어는 기계어로 번역되어 동작한다. 2.x86 레지스터 여기서 모든 레지스터를 다루지는 않을것이다. 일단 이것만큰은 반드시 알아야한다고 생각되는것만 넣었다. eax,ebx,ecx,edx : 범용 레지스터로 32b..