[1] 모니터링과 스니핑
□ LAN: 브로드캐스트 기반 전송
□ NIC
▪ 자체 MAC 주소
▪ 브로드캐스트 MAC 주소
□ 비규칙(Promiscuous) 모드의 NIC : 모든 프레임을 수신할 수 있음
□ 관리자로서 카드에 의해 수신된 모든 메시지를 듣는 것을 모니터링이라고 합니다.
□ 사용자 동의서를 위반하여 카드가 수신한 모든 메시지를 듣는 것은 스니핑입니다.
□ 데몬의 실행 인스턴스를 기록하는 작업을 로깅이라고 합니다.
[1-1] 스니핑 툴
대부분의 툴은 TCPdump를 기반으로 하며, libpcap(패킷 캡처 라이브러리) 확장은 비규칙(Promiscuous) 모드를 사용합니다.
( 그 외, snort, desniff )
윈도우는 많은 스니핑 툴이 있고, WinDump 및 winpcap은 TCPdump 및 libpcap의 직접 포트이다.
[1-2] 스니핑 공격
암호 기반 원격 액세스(telnet)는 스니핑에 취약함. => telnet 또는 rsh 대신 ssh를 사용하는 방법이 있음
보안 셸(ssh)을 사용하여 두 컴퓨터는 아래의 항목을 협상함.
>> 세션 중에 사용할 대칭 키
>> 공개/비공개 키 쌍을 사용하여 키 교환
그러나 신뢰할 수 있는/검증 기관이 없으므로 키의 초기 교환은 중간자 공격의 대상이다.
이러한 경우 desniff를 사용하여 초기 교환을 볼 수 있다.
(1) TCPdump 사용
-> inconfig -a : 유닉스 기반의 인터페이스 리스트
-> tcpdump -i eth0 tcp
(ex) $tcpdump -i eth0 src biff.cs.umass.edu and tcp, $tcpdump -i eth0 not dest blinky.cs.umass.edu and arp
h0 tcp
(2) snort
□ IP 네트워크에서 실시간 트래픽 분석 및 패킷 로깅을 수행할 수 있는 경량 네트워크 침입 감지 시스템
▪ 호환성이 좋고, tcpdump 데이터 파일 생성 가능
▪ bpf(Berkeley 패킷 필터) 규칙에 대한 Full support
▪ 단순 규칙 언어
세가지 주요 용도
- 패킷 탐지기
- 패킷 로거
- 침입 감지 시스템
[2] 버퍼 오버플로
프로그램 버퍼 오버플로는 가장 일반적인 보안 취약점 중 하나이다.
- 임의 명령을 실행할 수 있는 SUID 루트 프로그램을 얻으면, 비밀번호를 모르는 상태에서 root로 로그인할 수 있습니다.
- 루트 권한 코드를 가져와 실행하고 프로그램 주소 공간에 취약성 공격 코드를 삽입합니다.
- 프로그램이 해당 코드로 이동하도록 합니다.
=> SUID 프로그램은 위험함 : SUID 루트 실행 프로그램에서 /bin/sh에서 명령어 2줄로 루트 셀을 가질 수 있게 됨
▪ cp/bin/sh/tmp/evil
▪ chmod 04755 /tmp/evil
[2-1] 메모리 상태
메모리에서 프로세스 상태는 아래와 같은 항목으로 구성된다.
▪ 프로그램 실행 코드
▪ 실행 중인 프로그램의 정적 데이터
▪ 동적 데이터(the heap) 및 힙 포인터(hp)를 위한 공간
▪ 프로그램 카운터(PC), 실행할 다음 명령을 나타냄.
▪ 프로그램의 함수 호출 체인이 있는 실행 스택(the stack)
▪ CPU 레지스터 값
▪ 사용 중인 OS 리소스 집합(예: open files.. )
▪ 프로세스 실행 상태(준비, 실행, 대기 등)
메모리는 크게 4의 영역을 고려한다.
static data | 미리 할당된 메모리 [ ex. int array[9]; ] |
text | 명령어들과 읽기 전용 데이터 |
heap | 사용자가 data malloc(), free() 등을 통해 크기 조정이 가능한 영역 |
stack | push&pop data 구조로, 함수에 사용되는 로컬 변수 할당, 변수 전달, 함수 호출에서 반환하는 값 또는 반환 주소를 위해 사용되는 영역 |
[2-2] 함수 호출
- 스택은 프레임의 논리적 스택으로 구성
- 프레임은 함수에 주어진 매개 변수, 로컬 변수, 반환 주소, 이전 프레임 포인터 등으로 구성
- 따라서 이전 예제에서는 (각 프레임의) 스택이 다음과 같이 표시됩니다.
[2-3] Smashing the Stack
- buffer[]가 명령줄에서 입력을 가져오고 입력이 할당된 메모리보다 길면 프로그램은 return addr에 쓴다.
- 이게 완벽하게 수행되면, RA에 입력된 메모리 위치를 쓸 수 있다.
- 함수가 완료되면, 입력된 첫 번쨰 명령이 실행된다.
[2-4] net을 통한 버퍼 오버플로 : Morris worm
Fingerd는 입력 크기를 확인하지 않고 누구를 가리킬지에 대한 입력을 받음.
Morris는 buffer overflow 후에 다음과 같은 코드를 작성하여 모리스 웜을 생성한다.
[2-5] 방어 전략
1. 입력 기능을 주의하여 사용해야한다.
▪ strcpy(), strcat(), sprintf(), gets()를 사용하지 마십시오.
▪ 대신 strncpy(3), strncat(3), snprintf(3) 및 fgets(3)를 사용합니다.
> 다른 문제가 있는 구조:
▪ fscanf(3), scanf(3), vsprintf(3), realpath(3), getopt(3), getpass(3), stradd(3), strcpy(3)
reference: “Smashing the Stack” by Aleph One
[3] Denial of Service (DOS)
Dos의 목적 : 특정 리소스에 대한 합법적인 사용자의 엑세스들을 거부시키는 것
공격 유형
- 리소스 소진 ( 모든 대역폭, CPU, Disk space 들을 끝까지 사용함 )
- programming fault : 프로그램 , OS또는 임베리드 로직의 결함을 이용함
- 라우팅 과 DNS 공격 : 라우팅 테이블 업데이트나 DNS 캐시 포이즈닝을 통한 공격
- 공격에는 3가지 카테고리가 존재함 ( 사용자 대상, 호스트 대상 , 네트워크 대상 )
[3-1] Host를 겨낭한 Local DOS
- fork() bomb
- 의도적으로 오류를 생성하여 로그를 채우고, Disk 공간을 소비하고, 충돌시키는 전략
대책
▪ partition disks
▪ disk quotas ( 디스크 할당량 )
▪ set process limits ( 프로세스 제한 설정 )
▪ monitor system activity/CPU/Disk Usage
▪ Physical Security
[3-2] Network를 기반으로한 DOS 공격
대부분은 리소스 소진 또는 운영 체제 런타임 환경 손상과 관련
[1] UDP bombing | |
[2] tcp SYN flooding | |
[3] ping of death | |
[4] smurf attack |
1. UDP bombing
echo(echoes back any char received) 및 chargen(generates char)의 두 가지 UDP 서비스를 사용한다.
포트 19 에서 포트 7을 연결하여 대량의 네트워크 트래픽을 생성하여 송신한다.
( unix : /etc/ineted.conf , Cisco IOS : no dup samll-services )
>> 대책 :
- echo, chargen 및 기타 사용되지 않는 서비스를 관리함
( unix : /etc/ineted.conf , Cisco IOS : no dup samll-services )
- 방화벽 수준에서 UDP 트래픽 필터링. UDP 포트 53(DNS)과 같은 합법적인 트래픽만 허용
2. Windows UDP attacks
NewTear, Newtear2, Bonk 및 Boink는 MS Windows 95/NT TCP/IP 스택의 약점을 이용하는 도구 (fragmentation/reassembly)
공격자는 대상에게 잘못된 UDP 데이터그램으로 재구성되는 잘못된 형식의 IP 조각 쌍을 보냄
잘못된 데이터그램을 수신하면 대상은 "블루스크린" 호스트를 유지하거나 재부팅합니다 (The pathologic offset attack)
>> 대책: 벤더 패치 적용
3. TCP SYN Flooding
TCP 연결의 적합한 규격 : 3-way 핸드 쉐이킹 ( SYN - SYN/ACK - ACK exchange )
- TCP SYN flooding : TCP "half open" attack
▪ 공격자는 SYN을 사용하여 서버에 대한 TCP 연결을 시작합니다.
▪ 서버가 SYN-ACK로 응답합니다.
▪ 그러면 클라이언트가 ACK를 다시 보내지 않습니다.
▪ 서버는 커넥션을 유지하면서 게속 기다림 ...
(클라이언트가 초기 소스 주소를 스푸핑한 경우 SYN-ACK을 수신하지 않음)
half-open connections : 서버가 반쯤 열린 상태로 대상 서버의 대기열이 게속 채워진다.
-> 버퍼가 비워질 때까지 시스템은 새 수신 연결을 수신할 수 없음
대책
▪ TCP 연결 대기열 증가
▪ 연결 설정 시간 제한 감소
▪ IDS 사용
▪ 일부 IP 스푸핑을 방지를 위해 수신/송신 라우터 필터 설치
4. Ping of the Death
호스트가 네트워크 또는 브로드캐스트 주소로 ICMP 에코 요청(ping)을 보냄
▪ 네트워크 주소: 호스트 부분이 0입니다.
▪ Directed Broadcast : 1이 모두 포함된 호스트 부분
TCP/IP 사양은 최대 패킷 크기를 65,536 옥텟으로 허용한다.
Ping of Death 공격은 크기가 큰 ICMP 데이터그램(IP 패킷에 캡슐화됨)을 대상에게 보낸다.
=> 크기가 초과된 패킷을 수신하면 일부 시스템이 충돌, 중지 또는 재부팅되어 서비스 거부가 발생함
대책
대부분의 시스템은 거의 면역상태이지만, 필요하다면 공급 업체의 패치를 적용한다.
5. Smurf Example
스머프 공격에는 3개의 구성요소가 존재함 ( 공격자, 증폭(보조) 네트워크, 피해자 )
공격자는 IP 소스 주소를 중간 네트워크 브로드캐스트 주소에 대한 의도된 공격 대상자의 IP로 스푸핑합니다.
중간 네트워크의 모든 호스트가 응답하여 대상의 네트워크에 트래픽을 보내서 엄청난 트래픽을 몰리게 한다.
즉, 중계 네트워크에 의해서 수신 트래픽을 증가시킨다.
1. 공격자는 스푸핑된 소스 IP를 사용하여 ICMP(에코 요청) 패킷을 보냅니다. ( 공격자→10.1.2.255 )
2. 공격 대상자에게 ICMP 에코 응답이 쇄도함
3. 대상자는 엄청난 양의 ACK에 의해서 다운댐
대책
- 다른 네트워크에서 네트워크에 대한 IP 브로드캐스트 트래픽을 거부하도록 라우터 구성
- 커널 변수를 통해 브로드캐스트 주소로 전송된 패킷에 응답하지 않도록 호스트 구성
- IP 주소 스푸핑을 방지하기 위해 라우터에서 수신/송신 필터 구성
6. DDOS
- 공격자는 인터넷의 여러 컴퓨터에 원격 에이전트를 설치하여 여러 DoS 공격을 동시에 실행합니다.
- 공격자는 master로 로그인하여 슬레이브에 신호를 보내서 특정 대상 주소(피해자)에 대한 공격을 시작합니다.
- 그런 다음 슬레이브는 공격 대상자에 대한 TCP, UDP, ICMP 또는 smurf attack을 시작하여 공격한다.
대응책 :
trin00 (WinTrinoo), Tribe Flood Network (TFN) (TFN2k) ,Shaft , stacheldraht , mStream
'Lab & Research > Information Security' 카테고리의 다른 글
방화벽 (0) | 2022.06.10 |
---|---|
TCP/IP 보안 (0) | 2022.06.02 |
DNS 보안 (0) | 2022.05.30 |
IP 보안 (1) | 2022.05.29 |
무선 네트워크 보안 (0) | 2022.05.27 |