SYN flood 공격 막기
SYN Flooding 공격은 두 노드 간 TCP 연결인 3-way handshakes를 이용한 일종의 DoS(Deny of Service) 공격이다. 일반적으로 TCP에서의 3-way handshakes 연결은 클라이언트가 먼저 서버에게 SYN를 보내서 서버에게 연결을 요청하면 >서버는 SYN+ACK를 클라이언트에게 보내서 연결을 기다리고 >그러면 이제 클라이언트가 ACK를 서버로 보내서 서로 연결되는 과정을 가진다. 클라이언트가 계속해서 연결을 요청하는 SYN만 보내서 서버가 연결을 하려고 하면 ACK를 보니재 않으므로써 연결이 되지 못하고 연결 정보를 저장하는 backlog queue가 가득차서 서비스 불능인 상태가 되는 공격이다.
=>이런 syn_flooding 공격을 막으려면 서버의 연결 로그가 저장되는 backlog queue 용량을 늘려서 syn_flooding 공격을 견뎌낼 동안 관리자가 조치를 취해서 막으면 된다.
Smurf / Land 공격 막기
∎ 스머프 공격은 해커가 무수한 출발지 주소가 가짜인 패킷으로 서버에게 SYN로 보내면 서버는 클라이언트에게 SYN+ACK를 보내야 하는데 클라이언트 주소가 가짜이므로 SYN+ACK를 보내도 결국 서버는 클라이언트로부터 ACK를 받지 못하고 연결 대기 타임아웃에 걸릴 때까지 계속 포트를 열어놓고 기다리는 상태가 되므로 위험하다.
=>이런 smurf 공격을 예방하려면 TCP 연결을 초기화하는 tcp_syncookies 값을 1로 만들어서 온전한 패킷만 받게 해두면 된다. 사설 IP 등은 정식 인터넷에서 작동되지 못하기 때문에 인터넷 연결 활동을 기록하는 cookies에 들어갈 수 없기 때문에 이 기법으로 출발지 주소를 속이는 가짜 사설 IP를 걸러낸다고 봐도 된다.
∎ 랜드 공격은 해커가 출발지 주소와 포트를 임의로 변경해서 출발지와 목적지 주소를 동일하게 하는 패킷을 보낸다. 이렇게 하면 서버는 자기 자신과 연결을 맺음으로써 실행 속도가 느려지고 동작이 마비된다.
=>패킷 헤더를 검사하는 알고리즘을 넣어서 출발지와 목적지가 동일한 주소를 가진 패킷을 막게 해야 한다.
ICMP Redirect 막기
ICMP Redirect 공격은 해커가 자신의 MAC 주소를 ARP Spoofing 기법 등으로 로컬에 있는 주로 라우터(게이트웨이)의 MAC 주소와 같게 속여서(MAC cloned) 로컬 호스트들의 라우터로 가는 패킷이 해커 머신도 경과하도록 경로 변경을 해서 이들의 모든 정보를 보게하는 공격이다.
=>이런 icmp redirect 경로 변경을 막아주면 된다.
Reverse Path Filtering으로 DDoS(IP spoofing) 막기
해커는 임의의 가짜 IP 주소를 무제한으로 생성해서 타겟 서버에 특정 서비스를 요청하는 SYN를 보내는 Smurf 공격과 유사한 DDoS(Distributed DoS) 공격을 수행하기도 한다.
=>이를 막기 위해서는 들어오는 패킷의 헤더(src ip, src mac, des ip, des mac, ...)를 보거나 역으로 추적해서 사설 IP 주소이거나 출발지 주소가 불분명한 패킷을 막으면 된다.
Facked(Rogue) IP Filtering
해커가 자신의 IP나 MAC 주소를 속이고(ARP Spoofing은 주로 게이트웨이나 타게 머신을 대상으로 함 =>Redirecting) 네트워크로 들어와서 정상적인 호스트인척하면서 주변 호스트들의 정보를 빼는 수가 있다. 내부 LAN에서는 노드가 주변의 노드들을 브로드캐스트로 찾기 때문에 해커 노드를 promisc 모드로 만들어 두면 오가는 모든 패킷을 볼 수 있다.
=>이런 경우 NAC(Network Access Control) 도구인 Packet Fence를 사용해서 걸러 내거나 Spoofing 패킷과 Redirect 패킷의 기록을 남기는 log_martians(‘화성인’이라는 의미)를 설정해서 외부 접속을 로그파일로 저장하고 검토해서 이상하고 의심스러운 IP 주소를 TCPwrapper의 /etc/hosts.deny 파일에 기록하거나, Fail2Ban 도구로 막을 수 있다.
ping이나 tracert에 응답하지 않기
해커가 타겟 서버의 IP를 자신의 출발지 네트워크로 위장해서 전체 네트워크에서 특정 노드를 찾는 ARP echo request를 브로드캐스팅하면, 모든 클라이언트들이 이 브로드캐스트를 받고 해당 노드가 echo reply 유니캐스팅으로 자신의 MAC 주소를 해커에게 응답하므로 네트워크상의 트래픽이 과부하 되어 서버가 DoS 공격을 받게 되는 셈이 된다.
또 nmap -sS 192.168.100.100식으로 타겟머신의 서비스와 포트를 알아내는 nmap 도구도 ICMP 프로토콜이 사용되므로 echo request에 대한 echo reply를 막아두면 내부 정보가 노출되지 않을 것이다.
=>이런 공격을 막으려면 브로드캐스트로 요청되는 echo request ICMP 패킷에 응답하지 않게 하거나, 라우터와 서버에 패킷 필터링을 걸어서 패킷 량을 조절해두면 된다.
일반적인 Linux 서버 시스템에 대한 공격
Buffer Overflow 공격
프로그램의 결함을 이용해서 실행 중인 프로세스를 빼앗아 악성 코드를 실행시키거나, 시스템을 강제 종료시키거나, 권한상승을 통해서 관리자 쉘을 얻게 해주는 버퍼(프로그램이 실행될 때 일시적으로 사용하는 메모리 영역) 오버플로를 막을 수 있어야 한다.
일반적으로 프로그램은 버퍼 메모리에 확보된 자신의 메모리 영역(메모리 주소)에서 실행되므로 이 영역을 넘는 데이터를 저장할 수 없다. 하지만 버그나 악성코드 등으로 이 저장 용량을 넘어서는 데이터를 넣으면 오버되는 용량만큼 이웃한 메모리 영역으로 들어가게 되어서 이웃한 메모리에 있는 데이터가 실행되거나 외부로 드러나게 된다. 이런 공격이 버퍼 오버플로이다. 예전과 다르게 최근의 프로그램들에서는 이런 버퍼 오버플로 공격이 어렵지만 C나 C++로 작성된 프로그램은 자유롭게 메모리 영역을 드나들 수 있어서 위험하므로 C/C++로 작성된 프로그램을 보면 주의를 기울여야 한다.
=>LibSafe라는 프로그램으로 Buffer Overflow를 막을 수 있다.
① wget ftp://ftp.pbone.net/mirror/archive.fedoraproject.org/fedora/linux/extras/3/ x86_64/libsafe-2.0-16.fdr.1.rh80.x86_64.rpm 해서 다운받고,
② rpm -Uvh libsafe*.rpm로 설치해두고, libsafe를 /etc/ld.so.preload에 추가하면 외부에서 buffer overflow로 공격을 시도하면 strcpy(), wcscpy(), strcat(), getwd(), scanf() 등 안전하지 않은 함수를 검사해서 이상이 있으면 이들 함수의 실행을 막는다.
각종 오류를 이용한 공격
서버 프로그램과 응용 프로그램 등의 근본적이거나 설정상 오류를 이용한 침투를 수행할 수 있다.
서버 프로그램 설정상 오류
HTTP 서버(포트 변경, XSS, 서버 오염 등)는 물론 DNS 서버(호스트들의 정보 입수, Zone transfer 이용, 가짜 호스트 심어두기 등), Mail 서버(스팸메일 발송, POP3/IMAP을 이용한 메일 해킹), FTP 서버(계정정보 추출, 시스템 파일에 접근), 그리고 SSH 서버(원격 조정) 등에서 설정상 오류로 인해서 취약점이 드러날 수 있다. 서버 설정의 내용을 제대로 알지 못한 채 인터넷 등에서 다른 서버 설정을 그대로 따라서 자신의 서버 데몬이나 서버 프로그램에 설정하면 오히려 잘 보이지 않던 취약점이 생길 수도 있으므로 주의한다.
초기 패스워드 계속 사용을 이용한 공격
많은 서버용 프로그램이나 네트워크 장비들이 초기의 낮은 보안 설정과 123, abc, cisco, admin 등 초기 관리자 패스워드로 설정해서 출시하는데 조직의 관리자가 이런 보안 설정과 패스워드를 변경하지 않고 그대로 사용하고 있는 경우가 매우 많아서 보안상 취약점이 되고 있다.
APPs(어플리케이션) 오류를 통한 공격
또 여러 어플리케이션의 취약점도 많이 있는데 이 부분은 관리자가 아닌 솔루션 개발자가 해결해야 할 부분(secure software)이기도 하지만 서버나 네트워크 관리자도 알고 있어야 한다. 네트워크/서버에서 문제가 생겼을 때 관리자의 설정 미숙인지 웹 개발자의 허술한 솔루션 때문인지 시시비비를 가려낼 때에는 Wireshark와 같은 패킷분석 도구로 드나드는 패킷을 검토하면 어디에서 문제가 있는지 가려낼 수 있다. 또한 설정 상 오류로 인한 취약점은 Nessuss나 OpenVAS와 같은 취약점 분석도구로도 잘 가려낼 수 있다.
얼마 전에 떠들썩했던 드루킹 사건에서 나온 비밀 파일 저장도구인 TrueCrypt와 완벽하게 디스크를 삭제하는 DeGaussing 기법, 그리고 인터넷 쇼핑몰에서 100만 원짜리 물건을 1만원에 구매하게 해주는 Proxy 웹 해킹도구 BurpSuite나 Paros 등과 무선 키 크랙, VoIP 해킹 등은 구조와 설정 상 오류를 통한 해킹이 되기 쉬우므로 주의한다.
Server 오염 공격
타겟 웹 사이트에 대해서 서버 오염(Server contamination)으로 공격하기도 하는데 XSS와 CSRF가 있다.
▪ XSS(Cross Site Script)
외부입력을 받는 웹 서버의 인터페이스와 외부에 공개되는 게시판이나 방명록 등 서버 사이트에 클라이언트가 접속할 때 이 XSS를 통해서 연결되는 클라이언트 머신이 해킹당할 수 있다. 오염된 서버를 통해서 클라이언트들이 감염되게 하는 기법으로써 클라이언트가 웹 서버에 접속하면 서버에서 실행중인 Java Script/HTML 소스코드가 클라이언트의 웹 브라우저에 전송되어져 표시되는 원리를 이용해서 해커가 공격 스크립트가 포함된 글을 게시판에 올려놓고 일반 사용자가 이를 읽으려고 클릭하면 게시판에 포함된 악성코드가 사용자의 브라우저를 통해서 사용자 머신으로 들어가서 사용자의 로그인 정보 등을 해커에게 전송하는 식의 침투가 이뤄지는 것이다.
이런 침투는 웹 서버의 (실행) 스크립트가 필터링되지 않고 그대로 사용자 머신으로 옮겨져서 실행되는데 문제가 있다. 여기에는 reflected(외부에서 올리기)와 stored(서버에 저장해두기) 두 가지 기법이 있다.
=>이런 공격을 막으려면 이력서나 자소서 등 입력되는 파일이나 첨부파일의 확장자가 com, bat, exe, sh, php 등 실행 파일이면 금지하고, 확장자를 변경해서 올리는 경우도 많기 때문에 확장자의 변경여부도 확인하는 수단이 있어야 한다. pdf, zip 등은 통과된다.
Metasploitable이라는 취약한 Linux Ubuntu 서버에서 Mutillidae로 가면 OWASP 10이라고 해서 각종 보안상 문제를 테스트하게 해주는데 들어가서 실습해볼 수 있다. 여기나 DVWA에 들어가서 XSS(stored, reflected) 공격을 수행해볼 수도 있다. 그리고 위의 파일 확장자에 대한 것들도 DVWA로 가서 File Inclusion 등으로 실습할 수 있다.
▪ CSRF(Cross Site Request Forgery)
CSRF는 XSS와 유사한 서버 오염 공격법으로 서버를 장악하기 위해서 서버를 공격하는 기법이다. 서버 사이트에 대한 인증서를 속이거나 악성 스크립트가 삽입된 게시물 등을 서버에 노출시켜서 서버에 침투한 뒤 루트킷(rootkit)이나 백도어 등을 심어둔다.
=>이런 공격을 막으려면 알지 못하는 파일을 열거나 새로운 업데이트 등이 있다는 안내에 따라서 함부로 클릭하지 않는 것이 좋다.
Session Hijacking 공격
세션은 노드 A와 노드 B가 연결되어 있는 상태를 말하는데, Session Hijacking은 사용자가 웹 서버 등 서버에 접속해서 작업하는 동안 서버와 사용자 사이에 세션이 생성되게 되는데 해커는 Hunt와 같은 도구를 사용해서 이 세션에 끼어들어 이들의 통신 내용을 엿볼 수 있다. 이런 침투는 대부분 해커의 MAC 주소를 타겟머신의 MAC 주소로 변경(ARP Spoofing)해서 실행하는 일종의 MitM(Man in the Middle)식 공격이다.
=>이런 공격을 막으려면 네트워크 호스트들의 사용하지 않는 MAC 주소를 확인해서 차단하거나, NIC가 Promisc 모드로 운영되고 있는 호스트가 있는지 확인해야 한다. 네트워크상에 Promisc 모드의 존재 여부는 Promisc 모드를 사용하면 네트워크 트래픽이 급상승하므로 대역폭 모니터링을 통해서 알 수 있다.
혹은 서버 NIC의 MAC 주소를 static으로 해서 ARP Spoofing 당하지 않게 해도 된다.
SQL Injection 공격
해커는 SQL Injection도 사용한다. 대다수의 프론트 엔드 웹 사이트는 데이터를 보관하기 위해서 백 엔드 SQL 데이터베이스 시스템과 연동되어 운영된다. 사용자가 입력하는 문자열을 체크하는 기능이 내장되어져 있지 않으면 SQL 구문을 잘 아는 해커가 Havij, Blind SQL, SQL Ninja, DBpwAudit, 그리고 SQLPWnage 등 도구로 오류를 유발하는 SQL 구문을 작성해서 데이터베이스의 내용을 빼내는 공격을 수행한다.
=>이런 공격을 막으려면 SQL 쿼리가 들어올 때 SQL 구문을 체크해주는 formatter 등이 실행되게 해두거나, 원격에서 SQL 서버로 접속하는 호스트와 사용자를 제한해 두어야 한다.
OS Injection 공격
SQL Injection과 유사한 OS Injection도 있다. 해커는 Nmap와 같은 도구를 사용해서 타겟의 OS와 버전, 패치 등의 정보를 알아낸 다음, Googling 해서 이들의 취약점을 알아내어 악성코드를 작성한 뒤 침투하기도 한다. MySQL과 같은 데이터베이스는 CentOS와 같은 Linux 운영체제(OS) 위에 설치되어 운영되므로 MySQL이 취약하면 이를 공격한 뒤 MySQL이 실행되는 CentOS까지 침투하게 되는 경우이다.
=>이런 공격을 막으려면 사용자의 입력 값을 먼저 검증해서 쉘에서 직접 외부 쉘 등의 명령어가 실행되지 않도록 Java나 Python으로 프로그래밍 해두면 정보의 유출을 막을 수 있다.
Directory Traverse 공격
Directory Traverse는 HTTP나 FTP에서 공개된 디렉터리 /var/www/html이나 /var/ftp/public 디렉터리로 들어간 뒤 상위 디렉터리로 이동하는 공격을 말한다. 애플리케이션의 결함이나 설정 오류로 인해서 공개된 디렉터리 이외에 상위 디렉터리로 이동할 수 있게 되면 cd ../../../etc/passwd식으로 /나 /root 디렉터리로 올라갈 수 있게 되므로 위험하다.
=>이런 공격을 막으려면 chroot 명령어로 공개된 디렉터리를 가상의 루트(/) 디렉터리로 설정해두면 이 디렉터리 이상의 상위 디렉터리로 이동할 수 없게 되어 보안이 좋아진다.
chroot /home/centos 하면 /home/centos가 최상위 디렉터리(/)처럼 되어서 /home/ centos에서 cd ../../식의 상위 디렉터리 /로 이동하는 명령어가 먹히지 않는다.
Telnet은 평문장으로 데이터가 이동되지만
SSH는 SSL(Secure Socket Layer)라는 도구의 도움을 받아서 키를 생성한 뒤 서로 주고받아서 인증된 사용자, 호스트, 브라우저만 연결이 되게 한다.
MySQL의 root 패스워드 크랙하기
뒤에서 MySQL 데이터베이스 서버를 정식으로 설치해서 여러 실습해보지만, 여기서 간단히 MySQL 서버를 설치한 뒤 DBpwAudit라는 도구로 MySQL 서버가 설치된 CentOS 머신을 침투해서 데이터베이스 사용자와 패스워드를 추출하는 실습을 해본다. DBpwAudit 도구는 Oracle, MySQL, MS SQL, IBM DB2 데이터베이스를 사전기반(dictionary-based) 부르트포스(Brute Force)방식으로 공격해서 크레덴셜을 추출해준다.
=>이런 경우에는 원격에서 로그인 되는 ~ ‘root’@‘%’나 ~ ‘centos’@'%' 설정 부분이 가장 중요한 핵심인데 원격에서 로그인하는 사용자 규제를 잘 해두어야 한다.
패킷 위조하기
이제는 Proxy Server 역할을 하는 BackTrack의 Burp Suite 도구로 타겟과 오가는 패킷을 Proxy 에서 정지시킨 뒤 내용을 보고 패스워드를 알아내고 이 패킷을 위조해서 서버에 들어가 보자.
악성코드를 이용한 공격에 대비하기
악의적인(malicious) 기능을 하도록 짜여 진 소프트웨어를 악성코드(malware)라고 부르는데 여기에는 virus, worm, bot, 그리고 rootkit가 있다. 이들을 알아보고 방어책도 살펴본다.
Virus
Virus는 정상적인 파일이나 하드디스크의 부트 섹터(MBR:Master Boot Record)에 자리하면서 시스템을 부팅시키지 못하게 하거나 다른 파일을 감염시키고 증식하는 프로그램이다. 감염원을 숙주(host)라고 하며 감염된 파일은 외부로 내용을 노출시키기도 한다.
=>이런 공격을 막으려면 ClamAV 안티바이러스 프로그램, VirusWall(내부 LAN에서 virus가 퍼지지 않게 함) 설정 등을 해주면 된다.
Worm과 Trojan Horse
▪ Worm은 Virus와 달리 숙주(host) 없이도 스스로 복제하고 증식해서 주변을 오염시키므로 Virus보다 더 위험하다. 메일이나 웹 사이트에서의 폭발적인 감염은 대부분 이 Worm에 의한 것이다.
▪ Trojan Horses는 내부에 악성코드를 숨겨놓고 정상적인 소프트웨어처럼 위장한 백도어 소프트웨어이다. 해커가 소프트웨어 배포 사이트에 침투해서 배포되는 소프트웨어 안에 트로이 목마를 끼워놓으면 이 프로그램을 다운받는 사용자의 머신이 백도어에 감염되게 된다(<=XSS 유형과 비슷한 공격).
=>이런 공격을 막으려면 AV로는 막기 힘들고 출처가 불분명한 메일을 열지 않거나, 함부로 프로그램을 다운받지 않으며, 수시로 시스템을 점검(rootkit 점검 등)해서 제거해야 한다.
Bot와 BotNet
Bot는 주로 DDoS에 동원되는 감염된 좀비(zombie) PC를 말하며, 이런 좀비 Bot들로 구성된 네트워크를 BotNet로 부른다. 이 봇네트는 대부분이 DDoS나 스팸메일 공격을 수행하게 하는데 이용된다.
=>이런 공격을 막으려면 DDoS 공격을 막을 때처럼 Reverse IP Filtering을 사용해서 알 수 없는 IP 주소로 들어오는 패킷을 Linux의 iptables나 라우터의 ACL이나 Ingress 등으로 순식간에 특정 서버 서비스로 집중되는 트래픽 량을 제한해둔다.
=>조직의 정상적인 트래픽 상태를 알아야 비정상적인 운영을 파악할 수 있다!!!
Rootkit
Rootkit는 해커가 타겟머신에 침투한 뒤 나중에 쉽게 들어가서 작업할 수 있도록
백도어 파일 생성, 악성코드의 컴파일 작업, 백도어 파일 숨기기, 침투흔적에 관한 로그파일 삭제와 조정 등의 작업을 해주는 해커 도구를 말한다.
=>이런 공격을 막으려면 rootkithunter, checkrootkit 등 도구로 시스템을 점검해서 루트킷을 찾아내고 제거해야 한다.
기타 중요한 보안설정 파일들
/etc/rc.local 파일
시스템 시작 시 실행될 프로그램을 /etc/rc.local 파일에 등록해 두는데 이 파일은 다른 초기화 스크립트(init scripts)가 모두 실행된 다음 최종적으로 운영체제가 뜨기 전에 실행되는 스크립트이다.
cat /etc/rc.local 했을 때 원래 여기에 들어있는
touch /var/lock/subsys/local 한 줄 외에 관리자가 설정해두지 않은 알지 못하는 프로그램이 들어 있으면 침투도구일 가능성이 많다.
=>관리자는 여기에 바이러스 점검 프로그램 실행, 디스크 쿼타 실행, 네트워크 시간 맞추기 등의 실행파일 위치를 지정해주면 시스템 시작 전에 이들을 모두 실행해준다.
프로세스 모니터링 하기
어느 프로그램을 실행할 때 생성되는 프로세스(process)는 해당 프로그램을 실행한 사용자의 권한으로 실행되므로 역으로 프로세스를 보면 해커에 의한 침투 프로세스를 알아낼 수 있다. 'ps 옵션' 형식으로 프로세스를 보는데 많은 옵션이 있다.
find 명령어 응용하기
앞에서도 살펴보았지만 일반적으로 파일이나 디렉터리를 찾는 find 명령어는 활용도가 넓다. 옵션으로 -perm, -name, -type f/d, -not, -iname, -user, -used, -inum(i-node 숫자), -empty, -size ! +100M(100M 이하), ...등이 있는데 -exec 명령어 { } \;를 추가해서 여러 작업을 한꺼번에 처리 할 수도 있는 것을 알아보았다.
Kernel에서 실행될 수 있는 최대 파일 수와 프로세스 수를 지정해두기
머신에 지정된 최대 파일 수보다 악성 코드 등으로 인해서 더 많은 파일이 발견되면 에러 메시지를 띄우게 해서 백도어 파일 설치 등의 침투여부를 알 수 있다.
또 root 사용자의 열수 있는 최대 파일 수나 실행할 수 있는 프로세스 수를 별도로 조정해두면 해커가 침투해서 root 권한으로 설정된 파일 수나 작업(프로세스) 수를 넘기는 작업을 수행할 수 없게 된다.
누구나 들어와서 작업할 수 있는 /tmp의 파일 수를 점검하기
ls -dl /tmp 하면 누구나 들어와서 작업할 수 있게 되어 있고, Stickybit도 설정되어져 있는데 일반 사용자가 관리자의 권한으로 어느 작업도 할 수 있는 설정이다.
ClamAV를 설치해서 바이러스 막기
Linux 시스템이 바이러스에 감염되는 경우는 많지 않지만 머신끼리 데이터를 이동하다 보면 어느 머신의 공유 디렉터리에서 감염된 파일을 가져왔을 때 바이러스에 감염되는 수가 있을 수 있으므로 안티 바이러스(AV) 프로그램을 설치해두면 예방할 수 있다.
ClamAV는 빠르고 무료이며 trojans, viruses, malware, malicious software, 기타 위협을 막을 수 있다. 또 ELF, broken executable, Mail, OLE2, PDF, SWF, HTML, HWP3, XMLDOCS와 같은 어플을 지원해주므로 매우 유용하다.
clamAV의 로그파일은 /var/log/clamav/ 디렉터리에 있으므로 나중에 이 로그 파일을 보면 위협에 대한 정보를 볼 수 있을 것이다.
참고로 일반적인 네트워크 공격과 방어책을 다음 표로 정리해 두었다.
공격형태 설명과 방어책
Eavesdropping (도청)해커가 타겟에 취약점이 있는지 탐색하는 Sniffing이나 허락없이 다른 사람이나 조직의 컴퓨터로 들어가는 Spoofing으로 네트워크에서의 통신을 도청하는 것을 말한다.
=>이를 막으려면 강력한 암호화 문으로 통신해야 한다.
Data Modification (데이터 변조)해커가 타겟 네트워크에 침투해서 메일이나 인터넷 구매시 오가는 데이터를 프록시 서버 등에서 멈춘 뒤 변조해서 재전송하는기법이다.
=>이를 막으려면 프록시 관리와 SSL 인증을 통한 통신을 해야 한다.
Sniffing (취약점 탐색)데이터가 충분한 암호화로 보호되어 있지 않으면 해커가 외부에서 패킷을 탈취해서 네트워크를 들여다볼 수 있어서 위험하다. 타겟 네트워크의 취약점을 살펴보는 것을 스니핑이라고 한다.
=>이를 막으려면 ping 등 icmp 프로토콜(echo request/reply)을 규제한다.
Spoofing (IP/MAC 변조)해커는 자신의 IP/MAC 주소를 타겟 네트워크의 특정 호스트나 게이트웨이의 IP/MAC으로 변경해서 자신이 정당한 클라이언트인 척하면서 주변 호스트들의 정보를 얻어내는 기법이다. 타겟 네트워크에 침투하는 기법 중 하나이다.
spoofing은 MAC/IP 주소 등으로 타겟자를 속이는 것을 말하고,
(ping) sweeping은 타겟머신의 IP 대역 등을 알아내는 것을 말한다.
=>이를 막으려면 호스트들의 IP/MAC 주소를 정적으로 해 두어야 한다
Password Crack (패스워드 크랙)대부분 네트워크 로그인은 사용자명과 패스워드의 조합(합쳐서 Credential로 부름)으로 이뤄지는데 해커는 여러 가지 기법으로 이 크레덴셜을 크랙한다.
=>이를 막으려면 유효한 사용자 리스트를 저장하고 있는 데이터베이스등을 잘 관리하고 관리자 레벨로 권한상승을 못하게 하는 조치가 있어야 한다.
DoS (Denail of Service)해커가 타겟의 내부 네트워크를 조작하거나 외부에서 특정 서버 서비스로 집중적인 서비스를 요청해서 타겟 서버의 서비스를 불능상태로 빠지게 하는 기법이다.
=>이를 막으려면 포트나 루트킷 체크 도구를 실행시켜 두어야 한다.
MitM (Man in the Middle)해커가 클라이언트와 서버 사이에 들어가서 서로를 상대방으로 믿게 한 뒤 오가는 패킷을 가로채는 세션 하이재킹의 기법이다.
=>이를 막으려면 Arp spoofing이나 Session hijacking을 주의해야 한다.
Compromised-key (취약한 키)SSL을 취약한 키로 만들어 두면 해커는 dump와 같은 도구로도 해시 키를 쉽게 탈취해서 해시를 여러 방법으로 푼 뒤가 해당 키로 보안 네트워크에 정당하게 들어간다.
=>이를 막으려면 md5보다 SHA512나 RSA 알고리즘으로 강력한 키를 생성해서 사용하는 것이 좋다. 무선에서의 WEP 키의 취약함을 생각해 보면 된다.
Applications (응용프로그램)해커는 타겟 서버의 운영체제나 설치된 어플의 취약점이나 잘못 설정된 구성파일의 허점 등을 이용한 공격을 시도한다. MSWord,Adobe, VNC, ... 등에 취약점이 알려져 있다.
=>이를 막으려면 운영체제나 어플의 버전이나 패치, 배너 정보 등을 잘 관리해 두어야 하고, 서버에 쓸데없는어플을 많이 설치하지 말아야 한다.
OS (운영체제)운영체제 자체적인 취약점이 있다. 해커는 이런 운영체제별로 알려진 취약점 정보를 얻어서 침투해 온다.
=>이를 막으려면 패치나 업데이트를 잘 해두어야 한다.
ATP (Advanced Technology Persistence)해커는 이메일 등을 통해서 타겟 네트워크나 시스템에 악성코드를 심어 두거나 강제로 시스템을 암호화해서 데이터를 사용하지 못하게 하는 등의 공격을 수행한다. 장기간에 걸친 탐색을 통해서 타겟 네트워크의 취약점 등을 알아낸 뒤 지속적으로 짧게 공격을 수행하는 것이 특징이다.
=>이를 막으려면 패치를 적용하거나 망 분리(VLAN)를 통해서 네트워크를 안전하게 해두고, 이메일 파일첨부 등을 함부로 열지 말아야 한다.
Phishing (피싱)전자우편이나 메신저를 사용해서 신뢰할 수 있는 사람 또는 기업이 보낸 메시지인 것처럼 가장함으로써, 비밀번호 및 신용카드 정보와 같이 기밀을 요하는 정보를 부정하게 얻는 Social Engineering의 한 종류이다. 웹 사이트나 메일로가장한 형태가 일반적이다. 가짜 사이트로 유도하는 공격형태이다.
=>이를 막으려면 메일이나 게시판 등의 첨부 파일의 확장자가 실행 가능한 파일 확장자인지 필터링하게 해 두어야 한다.
Pharming (파밍)해커는 hosts와 hosts.ics, DNS, PAC(Proxy Auto-Config) 파일 등을 변경해서 악성 사이트로 유도하는 공격을 수행하는데 웹의 취약점 이용해서 자동으로 실행되는 파밍 악성코드를 사용하기도 한다. 사용자가 해커의 지시대로 움직이게 하는 공격형태이다.
=>이를 막으려면 시스템에서 파일 변동을 추적할 수 있게 해두고, 자바 등의 업데이트나 최신 패치를 해두어야 한다.
Ransom-ware (랜섬웨어)해커가 타겟 시스템에 암호화된 코드를 집어넣어서 웹 사이트를 잠그거나 무력화시키는 기법이다. 웹 사이트나 파일시스템을 마비시켜서 돈을 주어야 해제 코드를 준다. CryptoLocker와 같은 Trojan을 사용한다.
=>이를 막으려면 강력한 AV나 Anti-malware 프로그램을 사용하고, 웹 사이트 파일을 별도의 서버에 두거나 Rootkit을 감시하는 구조로 설정해두어야 한다.
Watering Hole (워터링 홀)타겟 웹 사이트나 게시판에 접속한 사용자만 오염되도록 악성코드를 심어두는 공격기법이다. 일종의 서버 오염 공격(XSS, CSRF)이다.
=>이를 막으려면 알지 못하는 파일을 함부로 열지 말아야 한다.
Virus Wall (바이러스 월)WAN으로부터 네트워크를 통해서 내부 네트워크로 유입되는 컨텐츠의 바이러스가 로컬 LAN 내부로 유입되지 않게 하는 기법
=>이를 막으려면 유입되는 데이터의 감염 여부를 검색하고 치료/격리 및 차단하여 바이러스의 확산을 막아야 한다.