전체 글
-
라우팅 프로토콜네트워크 2024. 6. 5. 20:08
포워딩: 라우터의 입력으로 들어온 패킷을 어느 출력으로 보내는가 (=데이터 플래인)라우팅: 출발지부터 목적지까지의 패킷의 루트 결정 (=컨트롤 플래인) 라우팅이란라우터에 저장될 라우팅 테이블(포워딩 테이블)을 만드는 과정 기존 방식각각의 라우터에서 알고리즘이 적용되어 경로가 정해짐=> 논리적으로는 데이터 플래인과 컨트롤 플래인이 분리되어 있으나, 물리적으로는 같은 곳 최근 방식상위 컨트롤러에서 정보를 받아서 경로를 결정하고 보내줌=> 논리적으로도 물리적으로도 데이터 플래인과 컨트롤 플래인이 분리됨기존 방식Routing Protocol의 목적 - 보내는 쪽에서 받는 쪽으로 "좋은 경로"를 설정해야 함여기서 좋다는 건 비용일 수도 있고, 혼잡도일수도 있고.. G = (N, E)N = {u, v, w, x, ..
-
IPv6네트워크 2024. 6. 5. 17:36
IPv4 32비트 짜리로는 모자라다2011년 IPv4 주소가 고갈됨 IPv6 데이터그램 포맷- 고정 40바이트- 프레그멘테이션 관련 헤더 없음 : 네트워크 환경이 개선되어 헤더 정보가 간단해짐- IP를 위해 128비트 할당 0123 : 4567 : 89ab : cdef : 0123 : 4567 : 89ab : cdefverpriflow lavelpayload lennext hdrhop limitsource address (128 bits)destination address (128 bits)data- ver: IPv6- priority: 패킷의 우선순위와 품질 지정- flow label: 동일한 흐름의 패킷 식별, 패킷 처리 효율성을 높임- payload len: 데이터 부분의 길이- next hdr: ..
-
Byte Ordering, Simple Buffer Overflow보안개론 2024. 6. 4. 21:43
Little endian- 높은 바이트가 높은 주소에 저장- 인텔 x86 Big endian- 낮은 바이트가 높은 주소에 저장- PowerPC, SPARC Data: 0x010203040x1000x1010x1020x103Little Endian0x040x030x020x01Big Endian0x010x020x030x04공격자들은 주소를 조작하기 위해 바이트 오더링 방식을 알아야 함CWE-121: Stack-based Buffer Overflow버퍼는 배열로 이루어진 임시 기억 공간제일 많이 할당되는 부분은 스택(지역변수)* 전역변수면 데이터 영역, malloc으로 할당 받았으면 힙 영역에 존재보통 스택에서 오버플로우가 많이 일어남 Stack-based 버퍼 오버플로우* 그냥 스택 오버플로우에는 재귀함수로 ..
-
Array Operations보안개론 2024. 6. 4. 17:51
int val[5];배열은 많은 경우 공격 대상이 됨주소 크기는 시스템에 따라 다름32비트 시스템에선 포인터 32비트 차지64비트 시스템에선 포인터 64비트 차지 (실제론 48비트만 씀) val[-3]val[0]에서 -12바이트 전으로 가서 읽으려고 할 것퍼미션이 있으면 접근 가능 typedef int zip_dig[5];zip_dig cmu = {1, 5, 2, 1, 3};zip_dig mit = {0, 2, 1, 3, 9};zip_dig ucb = {9, 4, 7, 2, 0};스택 보호 기법이 있는 경우, 32비트-> 제일 먼저 선언된게 낮은 주소에 들어감ucb [높은주소] .. {9, 4, 7, 2, 0}mit .. {0, 2, 1, 3, 9}cmu [닞은주소] ... {1, 5, 2, 1, 3}c..
-
Integer Overflow, Underflow / Signedness bugs / Widthness bugs보안개론 2024. 6. 4. 16:08
아리안 5적재된 위성을 궤도에 전달하기 위한 용도의 로켓64비트 숫자를 16비트에 채우면서 유발 화성 기후 궤도 탐사선록히드 마틴에서는 점화 데이터를 야드 단위로 만들었고,나사는 미터법으로 생각했음 -> 지나치게 낮은 궤도 - 폭발 비트 크기를 제대로 맞추지 않으면 문제가 생길 수 있음 char: -128~127unsigned char: 0~255short: -32768~32767unsigned short: 0~65535 Format Specifier%d - 10진수 정수 (4바이트)%u - 부호없는 정수%i - 아무 정수 (10진수, 8진수, 16진수) %hd - short (2바이트)%hu - unsigned short %hhd - char (1바이트)%hhu - unsigned char %ld - ..
-
Use After Free보안개론 2024. 6. 3. 17:35
CWE 416이미 해제된 메모리 청크를 가리키는 포인터를 다시 참조함https://github.com/Lagooneng/UseAfterFree GitHub - Lagooneng/UseAfterFree: 간단한 Use After Free 예시간단한 Use After Free 예시. Contribute to Lagooneng/UseAfterFree development by creating an account on GitHub.github.com예시 코드 프로세스에서 의도되지 않은 동작을 유발할 수 있음#include #include struct unicorn_counter {int num;};int main() { struct unicorn_counter *counter; int *run_cal..
-
bin, chunk, double free보안개론 2024. 6. 3. 17:03
glibc Heapmalloc, free 관련 bin - 뚜껑이 달려있는 저장통, 상자, 쓰레기통 ..어쨌든 용량이 다른 여러 종류의 통힙에서 해제가 된 메모리 청크를 관리하기 위해 사용하는 자료구조 힙에서는 청크가 메모리를 할당하거나 해제하는 단위malloc : 메모리를 청크 단위로 할당해줌free : 사용이 끝난 메모리를 해제 해제된 청크는 해당되는(사이즈 맞는) 빈에 저장되는데,각 빈은 서큘러 더블리 링크드 리스트 형태 할당된 청크Meta DataUser DataMeta Data사용자 데이터가 있고, 메타 데이터가 앞 뒤로 있음각각의 청크는 사용자 데이터 뿐만 아니라 관련 메타데이터도 포함함 해제된 청크Chunk SizeAMPFwd PointerBck PointerFD_NextsizeBck_Nex..
-
Fast File System운영체제 2024. 5. 28. 22:15
UFS (유닉스 파일 시스템)- 레이아웃부트 섹터슈퍼블록비트맵Inode유저 데이터심플하고 사용하기 쉬움보기에는 괜찮으나, Seek distance 같은 걸 고려하면 성능에 문제가 있고,데이터 하나를 write하는데에 상당히 많은 I/O가 발생-> 성능 문제-> 일관성 문제 성능적으로 굉장히 나쁨UFS의 구조대로면 디스크 바깥쪽에 inode가 쭉 쌓이고 안쪽에 유저 데이터가 존재inode와 데이터 접근을 번갈아하면서 디스크 시크가 많이 발생하게 됨=> FFS .. inode와 유저 데이터를 가까운 곳에 놓겠다. 같은 실린더 그룹에 있는 데이터는 시크 디스턴스가 필요 없음혹은 가까운 실린더에서는 시크 디스턴스가 적게 필요* Ext2/3/4에서 사용되는 개념.. 블록 그룹이라 부름** 실린더 그룹: 중심으로부..