
소프트웨어 개발 보안 설계
시스템 보안 위협
버퍼 오버플로(Buffer Overflow) 공격
- 메모리에 할당된 버퍼 크기를 초과하는 양의 데이터를 입력하여 이에 따라 프로세스의 흐름을 변경시켜서 악성 코드를 실행시키는 공격
버퍼 오버플로 공격 유형
스택 오버플로(Stack Overflow)
- 메모리 영역 중 Local Value나 함수의 Return Address가 저장되는 스택 영역에서 발생하는 오버플로 공격
- 스택 영역에 할당된 버퍼 크기를 초과하는 양의 데이터(실행 가능 코드)를 입력하여 복귀 주소를 변경하고 공격자가 원하는 임의의 코드를 실행하는 공격
힙 오버플로(Heap Overflow)
- 프로그램 실행 시 동적으로 할당되는 힙 영역에 할당된 버퍼 크기를 초과하는 데이터(실행 가능 코드)를 입력하여 메모리의 데이터와 함수 주소 등을 변경, 공경자가 원하는 임의의 코드를 실행하는 공격
- 인접한 메모리(Linked-list)의 데이터가 삭제될 수 있으며, 해당 위치에 특정 함수에 대한 포인터 주소가 있으면 이를 악용하여 관리자 권한 파일에 접근하거나, 공격자의 특정 코드를 실행함
버퍼 오버플로 공격 대응 방안
스택 가드(Stack Guard)
- 카나리(Canary)라고 불리는 무결성 체크용 값을 복귀 주소와 변수 사이에 삽입해 두고, 버퍼 오버플로 발생 시 카나리 값을 체크, 변할 경우 복귀 주소를 호출하지 않는 방식으로 대응
스택 쉴드(Stack Shield)
- 함수 시작 시 복귀 주소를 Global RET라는 특수 스택에 저장해 두고, 함수 종료 시 저장된 값과 스택의 RET 값을 비교해서 다를 경우 오버플로로 간주하고 프로그램 실행을 중단
주소 공간의 임의 추출(ASLR, Address Space Layout Randomization)
- 메모리 공격을 방어하기 위해 주소 공간 배치를 난수화하고, 실행 시마다 메모리 주소를 변경시켜 버퍼 오버플로를 통한 특정 주소 호출을 차단
- 리눅스에서 설정 가능
안전한 함수 사용
- 버퍼 오버플로에 취약한 함수 : strcat( ), strcpy( ), gets( ), scanf( ), sscanf( ), vscanf( ), vsscanf( ), sprintf( ), vsprintf( ), gethostbyname( ), realpath( )
- 버퍼 오버플로에 안전한 함수 : strncat( ), strncpy( ), fgets( ), fscanf( ), vfscanf( ), snprintf( ), vsnprintf( )
백도어(Backdoor)
- 어떤 제품이나 컴퓨터 시스템, 암호시스템 혹은 알고리즘에서 정상적인 인증 절차를 우회하는 기법
- 허가받지 않고 시스템에 접속하는 권리를 얻기 때문에 대부분 은밀하게 작동
- 어떤 고정된 형태가 있는 것이 아니라 프로그램 일부로 감춰져 있을 수도 있고, 독자적인 프로그램이나 하드웨어 모습을 갖기도 함
- 해커는 백도어를 통해서 이용자 몰래 컴퓨터에 접속하여 악의적인 행위를 하기도 함
백도어 탐지 기법
프로세스 및 열린 포트 확인
- TCPView로 열린 포트를 확인하고 백도어 탐지
- 리눅스에서는 ps -ef 명령어(동작 중인 프로세스 확인), netstat -an(열린 포트 확인)을 통해 백도어 확인
Setuid 파일 검사
- 새로 생성된 Setuid 파일이나 변경된 파일 확인을 통해 백도어 탐지
백신 및 백도어 탐지 툴 활용
- 백신 프로그램 및 백도어 탐지 툴을 이용해서 의심 프로그램 및 백도어 유무 검출
무결성 검사
- 리눅스에서 Tripwire 툴을 이용한 무결성 검사 실시
- “No such file of directory”라는 메시지가 출력되면 정상
로그 분석
- wtmp, secure, lastlog, pacct, history, messages 사용하여 로그 분석 후 백도어 탐지
주요 시스템 보안 공격 기법
포맷 스트링(Format String)
- 포맷 스트링을 인자로 하는 함수의 취약점을 이용한 공격으로 외부로부터 입력된 값을 검증하지 않고 입출력 함수의 포맷 스트링을 그대로 사용하는 경우 발생하는 취약점 공격
- printf(argv[1]) 등 포맷 스트링(서식 문자열)을 인자로 하는 함수 사용 시 포맷 스트링을 지정하지 않고 사용자 입력값(argv[1])을 통해 포맷 스트링이 지정된다면 공격자는 이를 조작하여 메모리 내용을 참조하거나 특정 영역의 값을 변경 가능
레이스 컨디션(Race Condition)
- 둘 이상의 프로세스나 스레드가 공유 자원에 동시에 접근할 때 접근 순서에 따라 비정상적인(원하지 않는) 결과가 발생하는 조건/상황
- 실행되는 프로세스가 임시 파일을 만드는 경우 악의적인 프로그램을 통해 그 프로세스의 실행 중에 끼어들어 임시 파일을 목적 파일로 연결(심볼릭 링크)하여 악의적인 행위를 수행하게 하는 공격
키 로거(Key Logger)
- 컴퓨터 사용자의 키보드 움직임을 탐지해서 저장하고, ID나 PW, 계좌번호, 카드번호 등과 같은 개인의 중요한 정보를 몰래 빼가는 해킹 공격
- 키보드 활동을 기록하는 것을 키로깅 또는 키스트로크 로깅이라 함
루트킷(Rootkit)
- 시스템 침입 후 침입 사실을 숨긴 채 차후의 침입을 위한 백도어, 트로이 목마 설치, 원격 접근, 내부 사용 흔적 삭제, 관리자 권한 획득 등 주로 불법적인 해킹에 사용되는 기능을 제공하는 프로그램의 모음
보안 관련 용어
스피어 피싱(Spear Phishing)
- 사회 공학의 한 기법으로, 특정 대상을 선정한 후 그 대상에게 일반적인 이메일로 위장한 메일을 지속적으로 발송하여, 발송 메일의 본문 링크나 첨부된 파일을 클릭하도록 유도하여 사용자의 개인정보를 탈취하는 공격
스미싱(Smishing)
- 단문 메시지 서비스(SMS, Short Message Service)와 피싱(Phising)의 합성어로 문자메시지를 이용하여 신뢰할 수 있는 사람 또는 기업이 보낸 것처럼 가장하여 개인 비밀 정보를 요구하거나 휴대전화 소액 결제를 유도하는 피싱 공격(사이버 사기)
큐싱(Qshing)
- 큐알 코드(QR Code, Quick Response Code)와 피싱(Phising)의 합성어로 스마트폰을 이용하여 금융 업무를 처리하는 사용자에게 인증 등이 필요한 것처럼 속여 QR 코드를 통해 악성 앱을 내려받도록 유도, 금융 정보 등을 빼내는 피싱 공격(사이버 사기)
봇넷(Botnet)
- 악성 프로그램에 감염되어 악의적인 의도로 사용될 수 있는 다수의 컴퓨터가 네트워크로 연결된 형태
지능형 지속 공격(APT, Advanced Persistent Threat)
- 특정 타깃을 목표로 하여 다양한 수단을 통한 지속적이고 지능적인 맞춤형 공격
- 특수목적의 조직이 하나의 표적에 대해 다양한 IT 기술을 이용하여, 지속적으로 정보를 수집하고, 취약점을 분석하여 피해를 주는 공격
공급망 공격(Supply Chain Attack)
- 소프트웨어 개발사의 네트워크에 침투하여 소스 코드의 수정 등을 통해 악의적인 코드를 삽입하거나 배포 서버에 접근하여 악의적인 파일로 변경하는 방식을 통해 사용자 PC에 소프트웨어를 설치 또는 업데이트 시에 자동으로 감염되도록 하는 공격
제로데이 공격(Zero Day Attack)
- 보안 취약점이 발견되어 널리 공표되기 전에 해당 취약점을 악용하여 이루어지는 보안 공격
- 공격의 신속성을 의미하는 것으로, 일반적으로 컴퓨터에서 취약점이 발견되면 제작자나 개발자가 취약점을 보완하는 패치를 배포하고 사용자가 이를 다운받아 대처하지만, 제로데이 공격은 대응책이 공표되기도 전에 공격이 이루어지기 때문에 대처 방법이 없음
웜(Worm)
- 스스로를 복제하여 네트워크 등의 연결을 통하여 전파하는 악성 소프트웨어 컴퓨터 프로그램
- 컴퓨터 바이러스와 비슷하지만, 바이러스가 다른 실행 프로그램에 기생하여 실행되는 데 반해 웜은 독자적으로 실행되며 다른 실행 프로그램이 필요하지 않은 특징이 있음
악성 봇(Malicious Bot)
- 스스로 실행되지 못하고, 해커의 명령에 의해 원격에서 제어 또는 실행이 가능한 프로그램 혹은 코드
- 주로 취약점이나 백도어 등을 이용하여 전파되며, 스팸 메일 전송이나 분산 서비스 거부 공격(DDoS) 등에 악용
- 사용자들에게 잘 알려진 ‘좀비 PC’는 악성 봇에 의해 감염된 PC임
사이버 킬체인(Cyber Kill Chain)
- 록히드 마틴의 사이버 킬체인은 공격형 방위시스템으로 지능적, 지속적 사이버 공격에 대해 7단계 프로세스별 공격 분석 및 대응을 체계화한 APT 공격 방어 분석 모델
랜섬웨어(Ransomware)
- 악성코드의 한 종류로 감염된 시스템의 파일(문서, 사진, 동영상 등)들을 암호화하여 복호화할 수 없도록 하고, 피해자에게 암호화된 파일을 인질처럼 잡고 몸값을 요구하는 악성 소프트웨어
- 현금이나 비트코인 등을 받고 복호화 해주는 범죄행위에 이용되고 있음
이블 트윈(Evil Twin)
- 무선 Wifi 피싱 기법으로 공격자는 합법적인 Wifi 제공자처럼 행세하며 노트북이나 휴대 전화로 핫스팟에 연결한 무선 사용자들의 정보를 탈취하는 무선 네트워크 공격
사회 공학(Social Engineering)
- 사람들 심리와 행동 양식을 교묘하게 이용해서 원하는 정보를 얻는 공격
- 사례로는 상대방의 자만심이나 권한을 이용하는 공격 및 도청 등이 있음
트러스트존(Trutzone)
- 프로세서 안에 독립적인 보안 구역을 따로 두어 중요한 정보를 보호하는 ARM 사에서 개발한 보안 기술로 프로세서 안에 독립적인 보안 구역을 따로 두어 중요한 정보를 보호하는 하드웨어 기반의 보안 기술
타이포스쿼팅(Typosquatting)
- 네티즌들이 사이트에 접속할 때 주소를 잘못 입력하거나 철자를 빠뜨리는 실수를 이용하기 위해 이와 유사한 유명 도메인을 미리 등록하는 일로, URL 하이재킹이라고도 부름
'정보처리 > 정보시스템구축관리' 카테고리의 다른 글
소프트웨어 개발 보안 구축 설계 6/7 (0) | 2025.03.22 |
---|---|
소프트웨어 개발 보안 구축 설계 5/7 (0) | 2025.03.21 |
소프트웨어 개발 보안 구축 설계 3/7 (0) | 2025.03.19 |
소프트웨어 개발 보안 구축 설계 2/7 (0) | 2025.03.18 |
소프트웨어 개발 보안 구축 설계 1/7 (0) | 2025.03.17 |