[네트워크 보안] Chapter 03. 시스템 보안
3.1 운영체제 이론 및 일반
1. 운영체제 개요
- 운영체제 기능 및 구조
- 정보시스템의 자원(하드웨어 자원, 정보)을 최대한 효율적으로 관리, 운영함으로써 사용자들에게 편의성을 제공하고자 하드웨어와 사용자 프로그램 사이에 존재하는 시스템 프로그램으로 사용자 인터페이스 제공, 성능 향상 등 한정된 자원을 효율적으로 사용
- 커널은 하드웨어 특성으로부터 프로그램들을 격리시키고, 하드웨어와 직접적으로 상호 작용함으로써, 프로그램들에게 일관된 서비스를 제공
- shell이나 유틸리티 또는 응용 프로그램들은 정의된 시스템 호출을 통해서 커널과 통신. 유닉스 계열의 시스템이 부팅될 때 가장 먼저 읽혀지는 운영체제의 핵심 부분으로 주기억장치에 상주하게 되며 프로세스 스케줄링, 기억 장치 관리, 파일 시스템 관리, 운영체제의 고유 기능을 제공
- 정보시스템의 자원(하드웨어 자원, 정보)을 최대한 효율적으로 관리, 운영함으로써 사용자들에게 편의성을 제공하고자 하드웨어와 사용자 프로그램 사이에 존재하는 시스템 프로그램으로 사용자 인터페이스 제공, 성능 향상 등 한정된 자원을 효율적으로 사용
- 시스템 메모리 구조
- 스택(Stack) 영역
- 스택 영역은 로직이 동작하기 위한 인자(Argument)와 프로세스 상태를 저장하는 데 사용됨
- 힙(Heap) 영역
- 힙 영역은 프로그램이 실행될 때까지 알 수 없는 가변적인 양의 데이터를 저장하기 위해 프로그램의 프로세스가 사용할 수 있도록 미리 예약되어 있는 메인 메모리의 영역
- 힙 영역은 프로그램이 실행될 때까지 알 수 없는 가변적인 양의 데이터를 저장하기 위해 프로그램의 프로세스가 사용할 수 있도록 미리 예약되어 있는 메인 메모리의 영역
- 스택(Stack) 영역
2. 보안 운영체제(Secure Operating System)
- 개념
- 보안 운영체제는 기존의 운영체제에 내재된 보안상의 결함으로 인한 각종 침해로부터 시스템을 보호하기 위하여 기존의 운영체제 내에 보안 기능을 통합시킨 보안 커널(security kernel)을 추가적으로 이식한 운영체제이다.
- 커널 설계
- 커널은 최하위 수준의 기능을 수행하는 운영체제의 부분이다. 표준적인 운영체제 설계에서 커널은 메모리 관리(memory management), 동기화(synchronization), 프로세스 간 통신(IPC, interprocess communication), 메시지 전달(message passing) 및 인터럽트 처리(interrupt handling) 등과 같은 기능을 구현한다.
- 보안 커널은 운영체제 커널 내부에 포함되며, 운영체제의 보안 메커니즘을 시행하는 책임을 진다. 보안 커널은 하드웨어, 운영체제 및 컴퓨팅 시스템의 기타 부분 간의 보안 인터페이스를 제공한다.
- 참조 모니터(Reference Monitor)
- 참조 모니터란 사용자가 특정 객체에 액세스할 권리가 있는지, 또 해당 객체에 특정 행위를 할 수 있는지를 검사하는 기능으로, 보안 운영체제에서 프로세스(주체)와 파일(객체)의 정보 흐름을 감시하는 보안모듈이다.
- 보안 커널의 가장 중요한 부분으로 객체에 대한 접근 통제 기능을 수행하고 감사, 식별 및 인증, 보안 매개변수 설정 등과 같은 다른 보안 메커니즘과 데이터를 교환하면서 상호작용을 한다.
- 참조 모니터는 다음과 같은 특성을 지녀야 한다.
①참조 모니터에 대한 부정행위를 방지할 수 있어야 한다.
②참조 모니터는 항상 호출되어야 한다.
③참조 모니터는 분석과 시험이 용이하도록 충분히 작아야 한다.
- 신뢰 컴퓨팅 베이스(TCB, Trusted Computing Base)
- TCB는 보안정책을 준수하는 데 필요한 보안 운영체제의 부분이며, 보안에 매우 중요한 하드웨어, 펌웨어, 소프트웨어들의 조합이다.
- 따라서 TCB 내에 버그나 취약점이 존재한다면 전체 시스템의 보안을 위태롭게 할 수 있다.
3.2 모바일 운영체제
1. 모바일 운영체제 개요
- 최근의 모바일 운영체제는 스마트폰이나 스마트패드 등의 휴대기기의 운영체제뿐만 아니라 미들웨어, 사용자 인터페이스, 웹 브라우저, 이메일 클라이언트, 단문 메시지서비스(SMS), 멀티미디어 메시지 서비스(MMS) 등을 포함하고 있다.
- 모바일 운영체제 역사
- 팜 OS
- 팜(Palm) OS는 1996년에 개발된 운영체제로 개인용 정보단말기(PDA, Personal Digital Assistance)인 팜 파일럿에서 사용하기 위해 만든 것이다. 팜 OS에는 개인정보를 숨기기 위한 간단한 보안 툴이 포함되어 있었다.
- 윈도우 CE
- 윈도우(Windows) CE는 마이크로소프트사가 PDA나 모바일 장치 등에 사용하기 위해 만든 운영체제이다. 1MB 이하의 메모리에서도 동작이 가능하도록 설계되었으며 초기에는 팜 OS와 마찬가지로 PDA의 운영체제로 주로 사용되었다.
- 윈도우 모바일
- 윈도우 CE를 바탕으로 만들어진 모바일 장치 운영체제이다.
- 팜 OS
2. 최신 모바일 운영체제
- 윈도우폰(Windows Phone)
- 윈도우폰(Windows Phone)은 마이크로소프트의 스마트폰을 위한 임베디드 모바일 운영체제이다.
- 윈도우 모바일 시리즈를 계승하는 운영체제로 시작하였으며 마지막 버전은 윈도우 10 모바일이다.
- 블랙베리(Blackberry) OS
- 블랙베리(Blackberry) OS는 RIM(Research In Motion)에 의해 만들어진 모바일 운영체제로 메시지와 이메일 전송과 관련한 기능과 보안에 초점을 두고 있다.
- 이 운영체제는 멀티태스킹을 제공하고, RIM이 채택한 트랙휠, 트랙볼, 트랙패드, 터치스크린 같은 특화된 입력장치를 지원한다.
- 아이폰 OS(iOS)
- iOS는 애플의 아이폰과 아이패드에 사용되는 모바일 운영체제이다. 처음부터 iOS로 불렸던 것은 아니며, 2007년 4GB/8GB의 용량으로 출시된 아이폰 오리지널의 운영체제는 OS X였다.
- 운영체제의 이름은 2008년 SDK 발표 이후에 iPhone OS로 명명되었다가 2010년 6월에 iOS4 발표와 함께 iOS로 바뀌었다.
- 최신 버전은 iOS13.3.1이다.
- 안드로이드(Android)
- 휴대전화를 비롯한 휴대용 장치를 위한 운영체제와 미들웨어, 사용자 인터페이스 그리고 표준 응용 프로그램을 포함하고 있는 소프트웨어 스택이자 모바일 운영체제이다.
- 안드로이드는 개발자들이 자바 언어로 응용 프로그램을 작성할 수 있게 하였으며, 런타임 라이브러리를 제공한다.
- 또한 안드로이드 소프트웨어개발 키트(SDK)를 통해 응용 프로그램을 개발하기 위해 필요한 각종 도구들과 API를 제공한다.
- 최신 버전은 Android 10이다.
3. 모바일 운영체제 보안 위협
- iOS의 보안 체계
- iOS는 Darwin UNIX에서 파생된 맥 OS인 OS X의 모바일 버전에서부터 시작했다.
- iOS는 보안에 대한 기본적인 통제권을 애플이 소유하고 있으며 완전한 통제를 위해 다음 4가지의 시스템 보안 체계를 갖추고 있다.
- 안전한 부팅 절차 확보
- iOS를 사용하는 모바일 기기에서 모든 소프트웨어는 애플 암호화 로직의 서명된 방식에 의해 무결성이 확인된 후에만 동작한다.
- 시스템 소프트웨어 개인화
- 애플은 모든 소프트웨어를 애플의 아이튠즈를 통해 일괄적으로 배포
- 소프트웨어를 설치/업데이트 시에는 이전 버전으로 다운그레이드 할 수 없도록 함
- 응용 프로그램에 대한 서명
- 애플은 iOS에 설치되는 모든 앱에 대해서 코드 무결성 사인(Code Signature)을 등록
- 이 코드 무결성 사인은 앱에 대한 일종의 해시값으로, 등록된 앱의 코드 무결성사인이 다를 경우 앱을 설치하지 못하게 함
- 샌드박스 활용
- 샌드박스(Sandbox)는 응용프로그램이 실행될 때 일종의 가상머신 안에서 실행되는 것처럼 원래의 운영체제와 완전히 독립되어 실행되는 형태를 말한다
- 사용자의 앱의 경우 기본적으로 앱끼리 데이터를 주고 받을 수 없고, 시스템 파일에도 접근할 수 없음
- 앱끼리 문서나 음악 사진 등을 전송하는 것은 시스템 API에서 기능을 제공하는 경우에만 가능
- iOS의 취약점
- iOS의 보안상의 문제점은 대부분 탈옥(Jailbreak)한 iOS 기기에서 발생한다
- 안드로이드 보안 체계
- 안드로이드(Android)는 리눅스 커널(2.6.25)을 기반으로 한 모바일 운영체제
- 응용 프로그램의 권한 관리
- 안드로이드에 설치된 모든 응용 프로그램은 일반 사용자 권한으로 실행된다.
- 사용자의 데이터에 접근할 때 사용자의 동의를 받게 하고 있다.
- 응용 프로그램에 대한 서명
- 응용 프로그램에 대해 개발자가 서명을 하고 있다. 안드로이드에서의 전자서명은 보안보다는 응용 프로그램에 대한 통제권을 개발자가 가지게 하는 데 그 목적이 있다.
- 샌드박스 활용
- 안드로이드는 특정 형태를 갖추어 권한을 요청하는 것을 허용하고 있다.
- iOS에 비해 어플리케이션 간 통신과 데이터 전달이 자유롭다
- 안드로이드 취약점
- 안드로이드는 사용자의 선택에 따라 보안수준을 선택할 수 있다. 앱 마켓도 iOS는 하나로 통일되어 있는 반면 안드로이드의 경우 상당히 다양한 마켓이 존재한다.
4. 블루투스의 취약점과 위협
- 모바일기기의 또 다른 보안 문제는 블루투스의 사용이다.
- 여러가지 장치들이 작은 규격과 적은 전력으로 접근하기 때문에 높은 수준의 암호화와 인증을 구현하기가 어려워 다양한 위험에 노출될 수 있다.
- 블루프린팅(Blueprinting)
- SDP(Service Discovery Protocol)을 이용해 공격자는 공격이 가능한 블루투스 장치의 종류를 식별하여 활용할 수 있다.
- 블루스나프(BlueSnarf)
- 블루투스 장치끼리 인증없이 정보를 간편하게 교환하기 위해 개발된 OBEX Push Profile 기능을 사용하여 주소록, 일정 등을 열람할 수 있다.
- 블루버그(BlueBug)
- 블루버그는 블루투스 장비 간 연결 관리의 인증 취약점을 악용한 공격이다. 공격 장치와 공격 대상 장치를 연결하여 공격대상 장치에서 임의의 동작(전화걸기, 문자보내기, 주소록 읽기/쓰기 등)을 실행하는 공격이다.
3.3 클라이언트 보안
1. Windows 보안
- NFTS(NT File System)
- NTFS 파일 시스템은 Windows NT Server의 전용 파일 시스템
- NTFS 퍼미션(permission)
- NTFS 볼륨에는 각 파일이나 폴더마다 ACL(Accesss Control List)가 있어 접근을 통제
- 파일이나 폴더에 사용자 계정이나 사용자 그룹별로 액세스를 통제하고 이를 관리할 수 있는 퍼미션을 줄 수 있다.
- 중첩 퍼미션
①퍼미션은 누적된다.
개별 사용자가 여러 그룹에 속할 경우에 어느 자원에 대해 각기 다른 퍼미션을 그룹마다 주었을 경우에는 그 그룹에 속해 있는 개별 사용자에게는 누적되어 부여된다.
②파일 퍼미션은 폴더 퍼미션에 우선한다.
③Deny 퍼미션은 다른 퍼미션에 우선한다.
- 공유 폴더 보안
- 윈도우 NT 이상에서는 “관리목적을 위한 기본공유” 라는 것이 기본적으로 존재한다. 명령 프롬프트에서 net share를 실행하면 기본적으로 ADMIN$, IPC$, C$ 등이 공유되어 있음을 확인할 수 있다.
- 공유 해제 방법1: 명령어 이용. 그러나 재부팅 후 다시 공유됨
C:\>net share c$ /delete
- 공유 해제 방법2: 레지스트리 수정. 재부팅하더라도 공유 해제 유지됨
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
디렉토리에 DWORD 값을 추가하고 값을 0으로 설정 - 폴더를 공유할 경우에는 공유되는 폴더의 등록정보에서 [공유]-[사용권한]에서 사용자 및 읽기, 변경, 모든 권한을 선택하여 설정
2. 클라이언트 보안 위협
- 키보드 입력 정보의 노출
- 키로거 프로그램(Key Logger Program) 등을 이용하여 [그림3-14]와 같이 키보드로 입력되는 내용을 가로채 다른 컴퓨터에 개인의 ID와 비밀번호뿐만 아니라 계좌번호, 신용카드 번호 등을 유출하게 된다.
- 키로거 프로그램(Key Logger Program) 등을 이용하여 [그림3-14]와 같이 키보드로 입력되는 내용을 가로채 다른 컴퓨터에 개인의 ID와 비밀번호뿐만 아니라 계좌번호, 신용카드 번호 등을 유출하게 된다.
-
웜·바이러스의 감염
- 스파이웨어의 감염
- 스파이웨어는 사용자의 동의 없이 PC에 불법 설치되는 악성 프로그램으로 ID/Password 등의 사용자 로그인 정보, 사용자의 방문 웹 사이트 정보 또는 키보드 입력정보 등 중요정보를 수집하여 제3자에게 또는 공격자에게 전송하는 기능을 수행
- 단순 ID/Password의 사용
- ID 및 패스워드 인증 수단의 안정성 및 보안성은 패스워드에 의해 좌우되기 때문에 공격자가 패스워드를 알고 있으면 이용자 PC에 접속하여 PC에 저장된 국가정보 및 행정문서, 개인정보 등 중요 문서를 탈취할 수 있다. 또한, 이용자가 가입된 사이트에서 서비스 도용, 악성코드 전파 등의 정보시스템에서 발생 가능한 모든 침해 공격을 수행
3.4 서버 보안
1. 인증과 접근 통제
- 계정과 패스워드 보호
- 멀티유저(Multi-User) 시스템인 리눅스나 유닉스는 각각의 사용자만이 접근 가능한 파일, 디렉토리들이 있다. 일련의 규정들을 적용시킬 수 있는 것이 퍼미션이고 이런 퍼미션에 의해 사용자들은 자신의 영역을 갖게 된다.
- /etc/passwd
- passwd 파일은 계정에 대한 정보를 가지고 있다. 사용자들의 고유성을 나타내는 uid부터 어느 그룹에 속해있는지 등 정보가 들어있다.
- passwd 파일은 계정에 대한 정보를 가지고 있다. 사용자들의 고유성을 나타내는 uid부터 어느 그룹에 속해있는지 등 정보가 들어있다.
- /etc/shadow
- 사용자 계정에 대한 암호화된 패스워드 및 관련 정보를 포함하는 파일로 루트 사용자만 접근할 수 있다.
- 사용자 계정에 대한 암호화된 패스워드 및 관련 정보를 포함하는 파일로 루트 사용자만 접근할 수 있다.
- 사용자 계정 생성
- 사용자 계정 생성은 간단하게 다음과 같이 생성할 수 있다.
# useradd <username>
# passwd <username>
- 아무런 옵션 없이 사용자를 생성하였을 경우 기본 옵션이 적용된다. 기본 옵션 내용은 useradd -D 명령을 이용하여 확인할 수 있다. 수정할 수 있는 내용은 그룹, 홈 디렉토리, 쉘, 계정 만료일 등이 있다. 계정 생성 예를 들면 다음과 같다.
# useradd -u 501 -g 100 -G adm -d /home/academy -s /bin/bash -c "Academy" -m -k /etc/skel -f 0 -e 2020-04-09-academi
- 사용자 계정 생성은 간단하게 다음과 같이 생성할 수 있다.
- 로그 관리
- 침해사고 원인분석, 디지털 포렌식 등 정보시스템에서 로그는 가장 중요한 부분이다. 네트워크를 통해 서버에 접속하게 되는 순간부터 접속을 끊는 순간까지의 모든 행동들이 이 로그 파일이나 로그 서버에 저장되게 된다.
- 로그 파일의 종류 및 특성
- 리눅스 시스템에서는 /var/log에 기본 로그 파일들이 위치하게 된다.
- 리눅스에서 로깅은 시스템, 어플리케이션 심지어는 프로토콜 수준에서도 일어난다. 대부분 리눅스 서비스들은 로그 정보들을 로그 파일들과 표준 출력 장치에 출력
- ①lastlog
lastlog는 사용자의 최근 로그인 시간을 사용자 이름, 터미널, 마지막 로그인 시간으로 출력한다.
/var/log/last 파일에 저장되고 바이너리 형태이다. 따라서 텍스트 편집기로는 볼 수가 없고 lastlog라는 명령을 통해서만 확인이 가능하다. - ②wtmp
wtmp 로그는 파일이 생성되는 순간부터 사용자의 로그인과 로그아웃한 정보들을 보여준다. wtmp 파일은 사용자들의 접속기록에 대해 많은 정보를 가지고 있기 때문에 공격자들이 가장 먼저 지우고 나가려하는 파일이다보니 피해 시스템 분석에 있어서 매우 중요한 역할을 하고 있다. - ③btmp
btmp 파일은 로그인이 실패될 경우 이 파일에 저장되게 된다. 일반적으로 이 파일은 생성되지 않으며 직접 생성해주어야 한다. /var/log/btmp라는 빈 파일 하나만 생성해주면 된다. lastb라는 명령을 통해서 확인이 가능하다. - ④utmp
유닉스 시스템의 가장 기본적인 로그로 로그인 계정 이름, 로그인한 환경(initab id), 로그인한 디바이스(console, tty 등), 로그인한 쉘의 프로세스 ID, 로그인한 계정의 형식, 로그오프 여부, 시간에 대한 저장 구조를 확인할 수 있다. - ⑤messages
로그파일중 가장 중요한 부분으로서 로그인 기록부터 디바이스 정보, 시스템 설정 오류, 파일 시스템, 네트워크 세션 기록 등 가장 다양한 정보를 가지고 있는 파일이다. 또한 침입자의 공격 형태가 어느정도 기록되어 지기도 한다. - ⑥secure
텔넷이나 FTP, 원격접속 등 인증과정을 거치는 모든 로그를 secure 로그에 저장한다. - ⑦httpd log
웹 서버를 운영하고 있다면 access_log와 error_log 파일이 /var/log/httpd에 생기게 된다. - ⑧history
사용된 명령어 목록을 저장하는 파일로서 /var/log에 위치하지 않고 사용자의 홈 디렉토리에 사용자별로 존재한다. 공격자는 침입 후 관리자 권한을 획득하고 이 파일을 지우려고 할 것이다. - ⑨syslog
시스템의 운영과 관련한 전반적인 로그로써 /var/log/messages 파일에 하드웨어의 구동, 서비스의 동작과 에러 등 다양한 로그를 남긴다.
- 리눅스 시스템 커널 보안 설정 방법
리눅스 시스템의 /etc/sysctl.conf 파일에의 커널 보안 설정방법은 다음과 같다.
- ➊ping 요청을 응답하지 않게 설정한다.
- ➋브로드캐스트 주소에 ping을 못하도록 한다(기본값 0).
- ➌SYN Flooding 공격을 막기 위해서 백로그 큐의 크기를 늘린다(기본값 256).
- ➍ICMP Redirect를 위한 공격을 막기 위해서 리다이렉트를 끈다(기본값 1).
- ➎BED icmp 패킷을 무시하게 한다(기본값 0): Bad Error Message Protection Enabled
- ➏IP 스푸핑을 방지한다(기본값 0).
- ➐IP 스푸핑된 패킷을 로그에 기록한다(기본값 0).
- ➑연결 종료시간을 줄인다(기본값 60).
- ➒Keepalive 시간을 줄인다(기본값 7200).
- ➓열 수 있는 로컬 포트 범위를 늘린다(기본값 1024 4996) → (32768 61000)
3.5 시스템 공격 유형
1. 버퍼 오버플로우(BOF, Buffer overflow) 공격
- 버퍼 오버플로우
- 버퍼 오버플로우는 프로그래밍에서 버퍼에 지정된 크기보다 더 큰 데이터를 입력함으로써 버퍼의 한계를 넘어서는 현상
- 프로그래밍을 할 때 문자 배열의 경계 값 검사를 하지 않아 발생하는 취약점
- 공격자는 이를 시스템의 루트 권한을 획득하는 등의 공격을 하는데 악용
- 쉘코드(Shellcode)
- 공격자가 공격 대상 시스템에서 버퍼 오버플로우를 일으켜 사용자 명령어 해석기인 쉘로 제어를 넘기고 공격당한 프로그램의 권한으로 시스템의 다른 프로그램에 접근하기 위해 만든 공격 코드
- 버퍼 오버플로우 취약점을 악용한 공격 과정
- 공격 쉘코드를 특정 메모리에 저장한다.
- 루트 권한으로 실행되는 프로그램의 특정 함수의 스택 복귀 주소를 쉘코드가 저장된 버퍼의 주소로 변조한다.
- 특정 함수의 호출이 완료되면 변조된 복귀 주소의 쉘코드가 실행되고 루트 권한을 획득한다.
- 루트 권한 획득 후 악성코드, 백도어를 설치하여 정보를 수집하거나 다른 시스템을 공격한다.
- 버퍼 오버플로우 공격에 대한 대응책
- 버퍼 오버플로우에 취약한 함수를 사용하지 않는다.
strcpy(char *dest, const char *src); → char *strncpy(char *destination, const char *source, size_t num); strcat(char *dest, const char *src); → char *strncat(char *destination, const char *source, size_t num); gets(char *s) → char *fgets(char *str, int num, FILE *stream); sprintf(char *str, const char *format) → int snprint(char *s, size_t n, const char *format, ...);
- 최신의 운영체제를 사용한다.
- 운영체제는 발전하면서 Non-Executable Stack, 스택 가드(Stack Guard), 스택 쉴드(Stack Shield)와 같이 운영체제 내에서 해커의 공격코드가 실행되지 않도록 하는 여러가지 장치가 있음
- 버퍼 오버플로우에 취약한 함수를 사용하지 않는다.
2. 포맷 스트링(Format String) 공격
포맷 스트링은 1980년대에 알려지기 시작한 버퍼 오버플로우와 달리 1990년대 말이 되어서야 알려지기 시작한 공격이다. 데이터 형태에 대한 불명확한 정의로 인해 발생한다.
formatstring.c
#include <stdio.h>
main() {
char *buffer = "wishfree";
printf("%s₩n", buffer);
}
파라미터 | 특징 | 파라미터 | 특징 |
---|---|---|---|
%d | 정수형 10진 상수 (integer) | %o | 양의 정수 (8 진수) |
%f | 실수형 상수 (float) | %x | 양의 정수 (16 진수) |
%lf | 실수형 상수 (double) | %s | 문자열 |
%s | 문자 스트링 ((const)(unsigned) char *) | %n | *int(쓰인 총 바이트 수) |
%u | 양의 정수 (10 진수) | %hn | %n의 반인 2바이트 단위 |
- 공격 원리
test2.c#include <stdio.h> main() { long i=0x00000064, j=1; printf("i의 주소 : %x\n, &i); printf("i의 값 : %x\n",i); printf("%64d%n\n", j, &i); printf("변경된 i의 값: %x\n", i); }
- printf(“%64d%n\n”, j, &i)은 j와 i의 주소값에 64의 16진수 값을 입력함.
- test2.c를 컴파일하여 실행해보면 64값이 16진수인 0x40로 출력되는 것을 확인할 수 있음.
3. 백도어(BackDoor) 공격
- 백오리피스(Back Orifice)
- 백오리피스는 악용의 목적을 위해 만들어진 백도어 프로그램으로 원격지 네트워크에서 사용자가 모르게 정보 수집, 시스템 명령어 수행, 시스템 재구성 등 시스템을 통제할 수 있는 클라이언트/서버 어플리케이션이다.
- 넷버스(Netbus)
- 넷버스는 다른 파일은 감염시키지 않지만 인터넷을 통해 외부인이 자신의 컴퓨터로 들어와 파일을 삭제하거나 정보를 빼내어 갈 수 있는 백오리피스 프로그램이다.
- 스쿨버스(Schoolbus)
- 스쿨버스는 전형적인 트로이목마로서 백오리피스(Back Orifice)나 넷버스(Netbus)처럼 강력하면서 사용하기도 쉬운 프로그램이다. 기존의 트로이 목마처럼 서버 파일과 클라이언트파일로 이루어져 있으며, 서버 파일이 상대방 컴퓨터에 설치되어 있어야만 클라이언트 파일을 이용하여 서버 파일이 설치된 컴퓨터를 원격 조정할 수 있다.
- 루트킷(Rootkit)
- 백도어용 트로이목마 프로그램들의 패키지로서 숨겨진 기능을 추가하여 탐지가 어려움
- 루트킷은 login, ls, ps 등 각종 시스템 파일을 트로이 버전으로 변경시키는데 최근에는 커맨드라인에서 환경설정이 가능한 루트킷의 변종들도 많이 소개되고 있다.
- 이러한 루트킷들은 대부분 환경파일을 변경하거나 시스템파일(실행파일)을 변경함으로써 공격자가 의도하는 기능을 수행하게끔 하는데 체크섬이나 타임스탬프의 변경도 가능하여 해킹 피해시스템 분석에 있어서 가장 어려운 부분 중의 하나이기도 하다.
4. 무차별(Brute Force) 공격
- 가장 기본적인 공격 방법으로 특정 값을 찾아내기 위해서 모든 조합을 시도하게 되는 공격이다. 성공할 때까지 가능한 모든 조합의 경우의 수를 반복적으로 무작위 대입하여 얻은 답으로 공격을 시도하는 침입 방법이다.
5. 하트블리드(Heartbleed) 공격
- 하트블리드는 2014년 4월에 발견된 오픈소스 암호화 라이브러리인 OpenSSL의 소프트웨어 버그로서 서버와 클라이언트 간 정보를 탈취할 수 있다.
- 전 세계 웹 사이트 가운데 3분의 2 정도가 사용하는 오픈 SSL(Open SecureSocket Layer, 인터넷상에서 문자, 문서 등을 송수신할 때 이를 암호화해주는 기술)에서 발견된 치명적인 결함을 말한다.
- 오픈 SSL의 통신신호 하트비트(heartbeat)에서 발견되어 하트블리드라고 부르는데, HeartBeat는 서버와 클라이언트 사이에 무슨 문제는 없는지 또는 안정적인 연결을 유지하기 위한 목적으로 일정 신호를 주고받을 때 사용하는 확장규격이다.
6. 메모리 해킹
- 피해자 PC 메모리에 상주한 악성코드를 이용한 해킹 방법. 기존의 해킹 방법은 외부에서 계좌 비밀번호를 빼내는 방법에 초점을 맞춘 반면, 메모리 해킹 방법은 비밀문 같은 프로그램을 설치하고, 컴퓨터 메모리에 있는 비밀번호를 빼내는 것 뿐만 아니라 데이터를 조작하여 받는 계좌와 금액까지 변경할 수 있는 해킹 방법이다.
7. MITB(Man-In-The-Browser) 공격과 Web Injection
- MITB 공격은 웹 브라우저 내에 악성 프로그램이 설치된 상태에서 이루어지며, 악성 프로그램은 메모리에 로딩된 웹 페이지의 내용을 도청하거나 위/변조할 수 있다.
- 이는 통신구간에서 이루어지는 MITM과 관계가 없으며, SSL/TLS로 통신구간이 암호화되어 있더라도 MITB의 위협이 존재한다. MITB를 통해 웹 페이지를 위/변조하는 공격을 Web Injection이라고 한다.
8. 사회공학기법(Social Engineering)
- 인간 상호 작용의 깊은 신뢰를 바탕으로 사람들을 속여 정상 보안 절차를 깨트리기 위한 비기술적 침입 수단
- 통신망 보안 정보에 접근 권한이 있는 담당자와 신뢰를 쌓고 전화나 이메일을 통해 그들의 약점과 도움을 이용
- 상대방의 자만심이나 권한을 이용하는 것. 정보의 가치를 몰라서 보안을 소홀히 하는 무능에 의존하는 것과 도청 등
댓글남기기