보안 취약점
을 제거하고, 보안을 고려
하여 기능을 설계 및 구현⭐ 기무가 : 군대를 기무사로 가게 됐다..
기밀성 : 인가되지 않은
개인 혹은 시스템 접근의 정보 공개 및 노출 차단
무결성 : 데이터의 정확성 및 완전성
과 악의로 변경되거나 파괴되지 않음을 보장
가용성 : 권한을 가진 사용자나 어플리케이션이 원하는 서비스를 지속 사용
할 수 있도록 보장
SW 개발 보안 용어
수 많은 접속 시도, 서버의 TCP 연결 소진
DOS 공격 종류
- SYN 플러딩 :
SYN 패킷
만 보내 점유하여, 다른 사용자가 서버를 사용 불가하게 만듬- UDP 플러딩 : 대량의
UDP 패킷
을 만들어 응답 메세지(ICMP)를 생성, 자원 고갈- 스머프 / 스머핑 : 출발지 주소를 공격 대상의 IP로 설정. 패킷을
직접 브로드캐스팅
- 죽음의 핑 : ICMP 패킷을 정상적인 크기보다 아주 크게 만들어 전송
- 수신 측에서는
단편화된 비정상 패킷을 재조합
하는 과정에서 부하 발생- 랜드 어택 : 출발지 IP와 목적지 IP를
같은 패킷 주소
로 만듬.- 티어드롭 : IP Fragment Offset 값을
중첩되도록 조작
, 재조합하는 과정에서 오류- 붕크 : 처음 패킷을 1번으로 보내고,
다음 패킷
도 1번으로 조작함- 보잉크 : 중간 패킷 시퀀스 번호를 비정상적인 상태로 보내서 부하를 일으킴
DDoS 공격 (Distributed DoS)
여러 대의 공격자
를 분산 배치, 동시에 동작하게 함, 원격으로 공격
을 개시함DRDoS 공격
DRDoS 공격 방식
1. IP 변조 : 공격 대상 IP로 출발지 IP를 변조함. SYN 요청을 보냄
2. 서버로 응답 : 서버는 공격 대상으로 ACK를 보냄
3. 서비스 거부 : 공격 대상은 많은 ACK를 받아 자원 부족함
DRDoS 대응 방안
세션 하이제킹
TCP의 세션 관리 취약점을 이용한 공격기법
탐지 방법
- 비동기화 상태 탐지
- ACK 패킷 비율 모니터링
- 기대하지 않은 접속의 리셋 탐지
어플리케이션 공격 기법
- HTTP GET 플러딩 : 과도한 GET 메세지를 이용하여 웹 서버의 과부하 유발
- Slowloris : 헤더의 끝인 \r\n\r\n 이 아니라,
\r\n
만 전송하여, 연결 상태 유지, 자원 소모- RUDY Attack : 요청 헤더의
Content-Length
를 비정상적으로 크게 설정
- 데이터는 소량으로 보내 계속 연결 상태 유지시킴
- Slow Read Attack :
TCP 윈도 크기
를 낮게 설정, 데이터 전송이 완료될 때까지 연결 유지- Hulk DoS : 주소를 지속적으로 변경하여,
GET 요청
을 발생시켜 서비스 거부
- 주소를 변경하는 것은 디도스 대응 장비 우회
- Hash Dos : HTTP POST를 사용하여 많은 수의 파라미터를 서버에 전달.
네트워크 공격 기법
- 스니핑 : 직접 공격을 하지 않고, 데이터만 몰래 들여다보는 수동적 공격
- 네트워크 스니퍼 : 네트워크의 취약점 파악을 위해 공격자가 취약점 탐색하는 도구
- 패스워드 크래킹
- 사전 크래킹 : ID와 PW가 될 가능성이 있는 단어를 미리
파일
로 만들어 놓고, 대입- 무차별 크래킹 :
무작위
로 대입하여 패스워드를 알아내는 기법- IP 스푸핑 : 침입자가
인증된 컴퓨팅 시스템인 것처럼
속여서 시스템 정보를 빼냄- ARP 스푸핑 :
MAC 주소
를 알아내고,희생자의 MAC주소를 공격자의 MAC 주소로
- 변경된 MAC 주소를 통해서 패킷을 스니핑함
- ICMP Redirect 공격 : 스니핑 시스템을
라우터
인 것처럼 위조하여 패킷 스니핑- 트로이 목마 : 악성 코드가 숨어 실행하면 악성 코드를 실행하는 프로그램
버퍼 오버플로 공격 : 메모리에 할당된 버퍼 크기를 초과하는 데이터를 입력
- 스택 버퍼 오버플로 공격 : Local 값이나, 함수의 Return 주소가 저장되는 스택 오버플로
- 버퍼 크기를 초과하는 양의 데이터를 입력,
복귀 주소 변경
, 공격자 원하는 코드- 힙 버퍼 오버플로 : 동적으로 할당되는 힙 영역에 할당된 버퍼 크기 초과
- 해당 위치에 특정 함수에 대한
포인터 주소를 악용
하여 관리자 권한 파일에 접근- 대응방안
- 스택 가드 활용 :
카나리
무결성 체크용 값 삽입, 버퍼 오버플로 발생 시 값 체크- 스택 쉴드 활용 : 함수 시작 시 복귀 주소
Global RET
스택에 저장. 종료 시 값 비교- ASLR 활용 :
주소
공간 배치난수화
, 실행 시 마다 메모리 주소 변경- 안전한 함수 활용 :
strncat()
,strncpy
...
💡 백도어 : 정상적인 인증 절차 우회하는 기법, 고정된 형태는 아님.
- 이용자 몰래 컴퓨터에 접속하여 악의적인 행위를 함
- 백도어 탐지기법
- 프로세스 및 열린 포트 확인 :
ps -ef
/netstat -an
- Setuid 파일 검사 : 새로 생성된 Setuid 파일을 통해 백도어 감지
- 백신 및 백도어 탐지 툴 : 툴을 이용하여 백도어 탐지
- 무결성 검사 :
Tripwire
툴을 이용하여 무결성 검사- 로그 분석
무결성
및 송신자 검증
이 인증에 해당기밀성
강조높은 객체를 읽어서
는 안됨낮은 객체에 기록
하면 안됨낮은 등급의 객체
를 읽을 수 없음높은 등급의 객체
를 수정할 수 없음암호화
와 복호화
에 같은 암호 키를 사용DES
: 미국 연방 표준국에서 발표한 대칭키, 블록 크기는 64bit, 키 길이는 56bitAES
: 블록 암호화 알고리즘, 블록의 크기는 128bit, 192bit, 256bit로 분류SEED
: 국내 한국인터넷진흥원이 개발한 블록 암호화 알고리즘.디피-헬만
: 최초의 공개키 알고리즘, 이산 대수의 계산이 어려운 문제를 기본 원리RSA
: 큰 인수의 곱을 소인수 분해하는 수학적 알고리즘을 이용한 공개키 알고리즘MAC
: 키를 사용하는 메세지 인증 코드로 메세지의 정당성 검증, 메세지와 함께 사용MDC
: 변경 감지 코드로 새로운 MDC를 생성하고, 송신자에게 받은 MDC 값 비교MD5
: 512비트짜리 입력 메세지 블록에 대해, 차례로 동작. 128비트의 해시값 생성SHA-1
: Digital Signature Algorithm 에서 사용, 160 해시 값 사용SHA-256/384/512
: SHA 알고리즘의 한 종류, AES에 대응하도록 출력 길이 늘림HAS-160
: 국내 표준 서명 알고리즘 KCDSA를 위해 개발,HAVAL
: 메세지를 1024bit 블록으로 나눔💡 암호화 기법
- API 방식 : 어플리케이션에서 암호 모듈을 적용,
어플리케이션 서버
에 암, 복호화, 키- Plug-in 방식 :
DB 서버
에 암복호화 모듈이 설치- TDE 방식 :
DBMS 커널
이 자체적으로 암 복호화 기능을 수행 가능.- Hybrid 방식 : API방식과 Plug-in 방식 결합 방식
PPTP : IP, IPX 페이로드를 암호화, IP 헤더로 캡슐화하여 전송
L2F : 하나의 터널에 여러개의 연결 지원, UDP 사용. 2계층에서 사용
L2TP : L2F와 PPTP의 결합 방법, UDP 사용, 터널링 인증, IPSec와 함께 사용하여 기밀성 제공
IPSec : IP 계층에서 무결성과 인증을 보장하는 인증 헤더
와 기밀성
을 보장하는 암호화
를 이용
기밀성 / 비 연결형 무결성 / 인증 / 재전송 공격 방지 / 접근 제어
동작 모드
IP 패킷 전체를 보호
하는 모드, IP 패킷을 IPSec으로 캡슐화IPSec 프로토콜
메세지 인증 코드(MAC)
을 이용하여, 기밀성은 제공하지 않음암호화
를 이용하여 기밀성 제공Key
에 대한 정의SSL/TLS : 웹 데이터 암호화, 상호 인증 및 전송 시 데이터 무결성 보장
조합
하여 사용Triple DES
, AES
같은 대칭 키 암호화RSA
, DSS
, X.509
공개 키 인증서S-HTTP (Secure Hypertext Transfer Protocol)
모든 메세지를 암호화
하여 전송하는 기술, HTTP를 사용한 어플리케이션에 한하여 보호