Notice
Recent Posts
Recent Comments
Archives
05-01 11:11
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
관리 메뉴

줴림이 공부하줴림

[정보처리기사 실기] Ⅸ. 소프트웨어 개발 보안 구축 (1) 본문

Study/Engineer Information Processing

[정보처리기사 실기] Ⅸ. 소프트웨어 개발 보안 구축 (1)

줴림 2025. 4. 30. 15:59


 

기타 네트워크 공격

ARP 스푸핑: 공격자가 특정 호스트의 MAC 주소를 자신의 MAC 주소로 위조한 ARP Reply를 만들어 희생자에게 지속적으로 전송하여 희생자의 ARP Cache Table에 특정 호스트의 MAC 정보를 공격자의 MAC 정보로 변경, 희생자로부터 특정 호스트로 나가는 패킷을 공격자가 스니핑하는 공격기법

ICMP Redirect 공격: 3계층에서 스니핑 시스템을 네트워크에 존재하는 또다른 라우터라고 알림으로써 패킷의 흐름을 바꾸는 공격기법. ICMP Redirect 메시지를 공격자가 원하는 형태로 만들어서 특정 목적지로 가는 패킷을 공격자가 스니핑하는 공격기법

트로이 목마: 악성 루틴이 숨어 있는 프로그램. 겉보기에는 정상적인 프로글매처럼 보이지만 실행하면 악성코드를 실행한다.

 

시스템 보안 위협

1. 버퍼 오버플로우 공격 (Buffer Overflow)

  • 메모리에 할당된 버퍼 크기를 초과하는 양의 데이터를 입력하여, 이로 인해 프로세스의 흐름을 변경시켜서 악성 코드를 실행시키는 공격기법
  • 종류: 스택 버퍼 오버플로우 공격, 힙 버퍼 오버플로우 공격
유형 설명
스택 버퍼 오버플로우 메모리 영역 중 로컬 변수나 함수의 반환 주소가 저장되는 스택 영역에서 발생하는 오버플로우 공격
스택 영역에 할당된 버퍼 크기를 초과하는 양의 데이터를 입력하여 복귀 주소를 변경하고 공격자가 원하는 임의의 코드를 실행한다.
힙 버퍼 오버플로우 프로그램 실행 시 동적으로 할당되는 힙 영역에 할당된 버퍼 크기를 초과하는 데이터를 입력하여 메모리의 데이터와 함수 주소 등을 변경, 공격자가 원하는 임의의 코드를 실행하는 공격기법
인접한 메모리의 데이터가 삭제될 수 있다.
해당 위치에 특정 함수에 대한 포인터 주소가 있으면 이를 악용하여 관리자 권한 파일에 접근하거나, 공격자의 특정 코드를 실행한다.

[ 공격 대응 방안 ]

  • 스택가드(Stackguard): 무결성 체크용 값(Canary)을 복귀 주소와 변수 사이에 삽입해 두고, 버퍼 오버플로우 발생 시 Canary값을 체크한다. 변할 경우 복귀 주소를 호출하지 않는 방식으로 대응한다.
  • 스택쉴드(Stack Shield): 함수 시작 시 복귀 주소를 Global RET라는 특수 스택에 저장해 두고, 함수 종료 시 저장된 값과 스택의 RET 값을 비교해서 다를 경우 오버플로우로 간주하고 프로그램 실행을 중단한다.
  • ASLR 활용: 메모리 공격을 방어하기 위해 주소 공간 배치를 난수화하고, 실행 시마다 메모리 주소를 변경시켜 버퍼 오버플로우를 통한 특정 주소 호출을 차단한다.
  • 안전한 함수를 활용한다.
    • 취약한 함수: strcat(), strcpy(), gets(), scanf(), sscanf(), vscanf(), vsscanf(), sprintf(), vsprintf()
    • 안전한 함수: strncat(), strncpy(), fgets(), fscanf(), vfscanf(), snprintf(), vsnprintf()

 

2. 백도어 (Backdoor)

  • 어떤 제품이나 컴퓨터 시스템, 암호 시스템, 알고리즘에서 정상적인 인증 절차를 우회하는 기법
  • 어떤 고정된 형태가 있는 것은 아님. (프로그램 일부로 감춰져 있거나, 독자적인 프로그램 or 하드웨어도 가능)
  • 백도어를 통해 이용자 몰래 컴퓨터에 접속하여 악의적인 행위 가능
탐지 기법 설명
프로세스 및
열린 포트 확인
TCP View로 열린 포트를 확인하고 백도어 탐지
리눅스에서는 ps-ef 명령어(동작 중인 프로세스 확인), netstat-an(열린 포트 확인)를 통해 백도어 확인
SetUid 파일 검사 새로 생성된 SetUid 파일이나 변경된 파일 확인을 통해 백도어 탐지
백신 및 백도어
탐지 툴 활용
백신 프로그램 및 백도어 탐지 툴을 이용해서 의심 프로그램 및 백도어 유무 검출
무결성 검사 리눅스에서 Tripwire 툴을 이용한 무결성 검사 실시
"No such file or directory" 메시지 출력 ⇒ 정상
로그 분석 wtmp, secure, lastlog, pacct, history, messages 사용하여 로그 분석 후 백도어 탐지