IT/시스템 보안 27

[Malware: Malicious Software] Type, History, Detection, Trend

Malware types Virus: OS 등 host에서 target file (일반적으로 실행파일)을 찾아 자기 자신의 복사본을 삽입하여 전파하는 코드 조각 * virus의 주요 위치: - Boot sector -> 다른 어떤것보다도 먼저 control 능력을 가짐  - Memory resident - Applications, macros, data, etc. - Library routines - Compilers, debuggers, virus checker, etc. * 독립적으로 실행될 순 없고, host 프로그램이 이것을 실행하게 해야 실행됨* target file이 실행되면 virus도 실행되기 시작 * 오염된 file이 machine에서 machine으로 이동할 때에만 퍼짐 Worm: 어떤..

IT/시스템 보안 2024.06.11

[Heartbleed Attack] TLS Record Protocol, Heartbeat Protocol, Heartbleed Attack

TLS▶TLS layer• Application layer→TLS: unprotected data 전송됨• TLS: handles encryption, decryption, integrity checks 수행• TLS→Transport layer: protected data 전송됨 ▶TLS Record ProtocolTLS handshake가 끝나면 client와 server는 header와 payload로 구성된 record를 이용해 데이터를 교환한다. Record Sending Data Receiving Data ▶Hearbeat protocol in OpenSSLclient와 server가 일정 기간 이상 서로에게 데이터를 보내지 않으면 통신을 막음으로써,TLS의 keep-alive feature을..

IT/시스템 보안 2024.06.07

[Shellshock attack] environment variable, bash, parse_and_execute()

Shell function을 child process에게 전달하는 방법▶Shell function 예시 ▶방법 1. parent shell에서 "함수" 형태를 가진 환경 변수를 정의한다.(정말 함수로서 정의됐는지 보려고 declare -f로 확인해 보았을때 정상적으로 함수 코드가 보이며, 함수를 실행하면 제대로 작동한다.) 이제 export -f로 함수를 export하고, child shell을 실행하면, child shell은 함수를 잘 전달받았다. (정말 잘 전달받은지 보려고 다시 declare -f로 확인해 보았을 때 정상적으로 함수 코드가 보이며,함수를 실행하면 제대로 작동함) ▶방법 2.parent에서 (이 방법에서는 parent가 꼭 shell이 아니어도 된다.) 단순히 "string" 형태의..

IT/시스템 보안 2024.05.19

[RELRO] RELRO의 개념, RELRO의 우회

RELRO란ELF는 data segment에 있는 GOT를 활용하여 반복되는 라이브러리 함수의 호출 비용을 줄이며,이 GOT에 값을 채우는 방식 중 Lazy Binding은   함수가 처음 호출될 때 함수의 주소를 구하고, 이를 GOT에 적는 방식이다.그런데 이 방식의 바이너리는 실행 중에 GOT 테이블을 업데이트할 수 있어야 하기에, GOT에 쓰기 권한이 부여가 되므로 취약하다.한편, ELF의 data segment에는 프로세스의 초기화 및 종료에 실행할 함수들의 주소가 저장된 .init_array, .fini_array가 있는데,여기가 조작이 가능하다면 이또한 취약하다.이러한 문제들을 해결하고자,데이터 세그먼트 중, 쓰기 권한이 불필요한 영역의 쓰기 권한을 제거함으로써, 해당 영역을 보호하는 RELR..

IT/시스템 보안 2024.05.15

[PIE] PIC와 PIE의 개념, 상대 참조, PIE의 우회

PIC와 PIE의 개념 PIC(Position-Independent Code): 재배치(Relocation)가 가능하여, 메모리의 어느 주소에 적재(매핑)되어도 코드의 의미가 훼손되지 않고 제대로 실행될 수 있는 코드  - rip를 기준으로 데이터를 상대 참조(Relative Addressing)하기 때문  PIE(Position-Independent Executable): 메모리의 어느 주소에 적재(매핑)되어도 실행 가능한 실행 파일   - PIE의 모든 코드는 PIC이다.- ASLR이 적용되면, 바이너리가 실행될 때마다 스택, 힙, 공유 라이브러리 뿐만 아니라 코드 영역까지도 무작위 주소에 적재됨 (↔ PIE가 아니면, 코드 영역은 랜덤이 아님)- 다만 ASLR이 안 적용되면, 무작위 주소에 적재되지..

IT/시스템 보안 2024.05.15

[DirtyCOW] memory mapping, mmap(), Copy on Write

memory mapping memory mapping이 뭔가요? 일반적으로 file에 access(open, read, write, ...)하는 방식은 두 가지가 있다. 1) by I/O Operation파일에 접근할 때마다 매번 system call을 통해 kernel을 깨워야 함-> overhead가 발생해버린다. 2) by memory mapping처음에 파일의 내용을 프로세스의 메모리에 한번 mapping해 두면,이후에 파일 내용에 접근할 때는, system call이 아니라, 메모리 주소를 통해 직접 접근  -> overhead 최소화! memory mapping by mmap() system callvoid *mmap(void addr[.length],  시작 주소: 어디에다가부터 mappin..

IT/시스템 보안 2024.05.14