오픈소스툴활용으로보안 200% 강화하기 홍석범 (CDNetworks)
보안사고발생 공격자가내부직원에게악성코드가첨부된메일발송 해당직원이첨부파일을실행하여자신의 PC 감염 공격자는해당 PC 의원격권한을얻어내부네트워크를스캔하여결국핵심엔지니어의 PC 까지접근 해당엔지니어의 PC 를통해내부의핵심시스템에접근하여중요정보취득 이사실이외부에공개되자해당기관은전고객들에게사과문게재와함께암호등고객정보변경요청
타산지석 2011 년 Adobe flash 0-day exploit 취약성을이용한 2 통의메일 ( 엑셀파일 ) 전송엑셀실행시 RAT(remote administration tool) 활성화 => 목표지점으로접근
개선사항 대부분의악성코드는 MS 계열기술조직은모두 Linux,MAC 을기반 OS 로사용 필요하다면 VM 으로 Windows 설치 Office(PPT 등 ) 만사용 Gateway 등주요시스템로그인에도입 초기에 Google OTP 도입 => 상용 migration 진행중 마지막보루로서 SIEM 을이용, 침해사고의 Golden time(1 주 ~2 주 ) 활용
보안을위한요구사항들 우리가사용하는 IP 대역에어떤포트 ( 서비스, 취약성 ) 가열려있지? 공격자에의해서버설정이변경되어도자동으로복구될수없을까? 많은서버에서생겨나는로그, 의미있는이벤트만볼수없을까? 웹스캐너, 웹방화벽도필요한데. ID/PW 로는부족한데,2 단계인증은어떻게구현하지? ISMS 나 PCI 등 Compliance 도통과해야하는데, 표준보안가이드없나?
오픈소스툴을활용해야하는이유 제품에환경을맞출것인가? 환경에제품을맞출것인가? 일년만쓰고버릴것인가? 재활용할것인가? 메뉴를이해할것인가? 작동원리를이해할것인가? 횟수에제한없이사용필요 신뢰할수있다
요구조건에맞는툴활용하기 우리가사용하는 IP 대역에어떤포트 ( 서비스, 취약성 ) 가열려있지?
NMAP 활용 가장대표적인 port scanner :: https://nmap.org Matrix 등 13 편의영화에출현 (?) 함 특정포트, Application 의오픈검색 $nmap -sv -P0 --open -p 22,3389,445 il ip_list -og open_result $ cat open_result grep telnet Host: 10.0.82.74 () Ports: 23/open/tcp//telnet//BSD-derived telnetd Host: 10.0.85.139 () Ports: 23/open/tcp//telnet//Netscreen ScreenOS telnetd Host: 10.0.90.66 () Ports: 23/open/tcp//telnet//Cisco router telnetd/ Host: 10.1.93.245 () Ports: 23/open/tcp//telnet//telnet (generic)/ $ cat open_result grep SSH Host: 10.19.150.195 Ports: 22/open/tcp//ssh//OpenSSH 4.3 (protocol 2.0) Host: 10.19.89.10 Ports: 22/open/tcp//ssh//OpenSSH 3.9p1 (protocol 1.99) -og :: output with Grepable format
NMAP 활용 NSE(Nmap Scripting Engine) 를활용, 확장된기능가능 /usr/local/share/nmap/scripts 에 500 여개스크립트 (+ 계속증가 ) auth : 인증과관련된스크립트, anonymous ftp 스캔등 discovery : 대상에대한깊이있는정보를찾는스크립트들 external : 외부의자원 (resources) 을활용한스크립트들 intrusive : 대상에대한공격시도를하는스크립트들 malware : 백도어나악성코드 (malware) 점검과관련된스크립트들 Vuln : 알려진취약성을점검하는스크립트들 nmap --script dns-recursion 192.168.1.0/24 nmap --script ftp-anon 192.168.1.0/24 nmap --script ftp-brute 192.168.1.0/24 nmap -p 80 --script http-backup-finder www.example.com index.bak 나 index.html~ 등과같은백업파일검색
NMAP 의 NSE 활용 nmap -p80 --script http-google-malware <host> safe browsing 을이용, malware 가삽입되었는지여부점검 PORT STATE SERVICE 80/tcp open http _http-google-malware.nse: Host is known for distributing malware. nmap -p80 --script http-sql-injection www.example.com nmap -p80 --script http-slowloris www.example.com nmap --script http-virustotal --script-args='apikey= xxxxxxx",http-virustotal.filename="/root/john-1.8.0.tar.gz"' http-virustotal: Permalink: https://www.virustotal.com/file/xxxxxx/analysis/1418142671/ Scan date: 20xx-xx-09 16:31:11 Results name result date version AhnLab-V3-20xx1209 20xx.xx.10.00 ALYac - 20xx1209 1.0.1.4 Comodo UnclassifiedMalware 20xx1209 20312...
NMAP 의 NSE 활용 nmap -sv --script=mysql-brute.nse -p 3306 192.168.1.201 3306/tcp open mysql mysql-brute: Accounts root:root - Valid credentials nmap --script reverse-index 192.168.0.0/24 Post-scan script results: reverse-index: 22/tcp: 192.168.0.60 23/tcp: 192.168.0.100 80/tcp: 192.168.0.70 445/tcp: 192.168.0.1 53/udp: 192.168.0.105, 192.168.0.70, 192.168.0.60, 192.168.0.1 _ 5353/udp: 192.168.0.105, 192.168.0.70, 192.168.0.60, 192.168.0.1
OPENVAS IN KALI http://tools.kali.org/tools-listing Openvas (http://openvas.org/) Nessus 의뒤를잇는취약성점검솔루션매우복잡한설치과정, Kali 는매우쉬움 openvas-setup; openvas-stop ; openvas-start
OPENVAS
NESSUS https://www.tenable.com/products/nessus-home
요구조건에맞는툴활용하기 많은서버에서생겨나는로그, 의미있는이벤트만볼수없을까?
OSSEC :: OPEN SOURCE SECURITY 오픈소스기반의 Host 기반 IDS/IPS( 침입탐지시스템 ), 현재는 Trendmicro 에서인수하여제공 http://ossec.net/ Log 분석, 파일무결성모니터링 (FIM), 루트킷탐지, 실시간탐지및차단 agent 기반, agentless 모두지원, log management 솔루션은아님 System(kernel, 내부 daemons 등 ) 의 visibility( 가시성 ) 를제공함 Server-agent 기반으로각서버에는로그를수집하는 agent 만설치하면되므로확장성이용이 기본적으로 /var/ossec 에설치되고, 주설정파일은 /var/ossec/etc/ossec.conf /var/ossec/rules/*.xml :: 룰파일, snort 처럼오탐이많지는않음 /var/ossec/logs/alert.log :: 알람파일
OSSEC Log 는 ossec 서버에서만분석되며 agent 는로그를보내기만함 활용사례 <syscheck> <directories check_all="yes">/etc,/usr/bin,/usr/sbin</directories> <directories check_all="yes">/root/users.txt,/bsd,/root/db.html</directories> <ignore>/etc/passwd</ignore> </syscheck> 파일이나디렉토리의속성 (md5,owner,permission 등 ) 이변경시알람함 <rule id="31103" level="6"> <if_sid>31100,31108</if_sid> <url>=select%20 select+ insert%20 %20from%20 %20where%20 union%20 </url> <url>union+ where+ null,null xp_cmdshell</url> <description>sql injection attempt.</description> <group>attack,sql_injection,</group> </rule>
OSSEC 알람예 Received From: (www.example.com) 192.168.7.19->/var/log/secure Rule: 5551 fired (level 10) -> "Multiple failed logins in a small period of time." Src Location: CN,Guangdong,Guangzhou Portion of the log(s): www vsftpd: pam_unix(vsftpd:auth): authentication failure; logname= uid=0 euid=0 tty=ftp ruser=zhaolg rhost=61.144.79.245 => 지속적인 ftp 접속시도를알람 Received From: localhost->ossec-logcollector Rule: 592 fired (level 8) -> "Log file size reduced." Portion of the log(s): ossec: File size reduced (inode remained): '/var/log/messages'. 파일을삭제하거나로그의특정부분을삭제시알람 Rule: 510 fired (level 7) -> "Host-based anomaly detection event (rootcheck)." Portion of the log(s): Process '17251' hidden from /proc. Possible kernel level rootkit. => Hidden process 탐지
OSSEC 알람예 -. level 0 : 가장낮은것으로무시하거나어떠한액션도취하지않는다. 흔히기존룰에서오탐이발생하였을때알람이발생하지않도록조정할때사용된다. -. level 2: 보안과는무관하게시스템과관련된이벤트를의미한다. -. level 3 : 인증성공 -. level 4 : 보안과는무관하게프로그램설치나시스템에러등이벤트 -. level 6 : 웜이나바이러스관련이벤트이지만심각도가낮은경우, 이를테면리눅스시스템인데윈도우관련웜의스캔인경우 -. level 10 : 여러번암호인증에실패하는경우의이벤트, 실제공격이거나암호를잊었을때발생할수있다 -. level 12 : 시스템의 error 나 warning 수준으로공격과관련된이벤트일수있음 -. level 13 : buffer overflow 등비정상적인공격시도 -. level 14 : 여러개의룰에서이벤트가발생하는등공격발생시 -. level 15 : 공격이성공하였을때의경우로즉각적인대응이필요함 <alerts> <log_alert_level>1</log_alert_level> <email_alert_level>7</email_alert_level> </alerts>
OSSEC AUTOMATIC RESPONSE ** Alert 1436711244.73713: - ossec,active_response, 2015 Jul 12 23:27:24 (www.server2.com) any->/var/ossec/logs/active-responses.log Rule: 603 (level 3) -> 'Host Blocked by host-deny.sh Active Response' Src IP: 192.168.0.2 Sun Jul 12 23:27:21 KST 2015 /var/ossec/active-response/bin/host-deny.sh add - 192.168.0.2 1436711242.71719 5720 <command> <name>host-deny</name> <executable>host-deny.sh</executable> <expect>srcip</expect> <timeout_allowed>yes</timeout_allowed> </command> <active-response> <command>host-deny</command> <location>local</location> <level>3</level> <timeout>600</timeout> </active-response>
OSSEC GUI # SPLUNK 설정예 <syslog_output> <server>172.10.2.3</server> <port>10002</port> </syslog_output>
요구조건에맞는툴활용하기 ID/PW 로는부족한데,2 단계인증은어떻게구현하지?
GOOGLE OTP Iphone, 안드로이드, 윈도우폰등모든 device 지원 OTP 코드는 30 초간유효, 30 초마다 Random 하게변경됨 T(Time based)otp 의경우 WIFI/LTE 연결이되지않아도사용가능 ( 시간동기화가중요 ) 별도의인증서버가필요하지않아비용투자가없음 Brute force 공격에안전, ID/PW 를저장하는사이트에도안전 IP 등으로 ACL 설정이불가한서비스에도유용함 사용하기편리함
GOOGLE OTP :: SSH 연동 https://github.com/google/google-authenticator/wiki Git 또는 # yum install google-authenticator 이후 QR code 를볼수있도록 # yum install qrencode 로설치각유저들은각자아래명령어로설정초기화 $ google-authenticator 이후.google_authenticator 라는설정파일이생성됨
GOOGLE OTP :: SSH 연동 이후 /etc/pam.d/sshd 파일에아래설정추가하여적용 auth required pam_google_authenticator.so /etc/ssh/sshd_config 파일에아래설정추가 UsePAM yes ChallengeResponseAuthentication yes PasswordAuthentication yes $ ssh antihong@192,168.11.4 -p22 Verification code: xxxxxx <== OTP 코드 Password: <== 기존에사용중인 password 응용예 ) Match User somebody AuthenticationMethods "publickey" Match User "*,!somebody" AuthenticationMethods "publickey,keyboard-interactive" => sombody 는 Key 로만인증, 나머지는 Key 와 OTP 로인증
다른 OTP 솔루션 Google OTP 의단점 QR Code 를복사해두면 OTP 를재사용 ( 재생성 ) 할수있음 Browser plugin 을설치하여사용할수있음 OTP 사용에대한 history 관리가안됨 SSH 외 RDP 나 Web 등다른 Application 적용에어려움 여러 Application 을사용할경우중앙관리를위해서는별도개발이필요함 FreeOTP :: https://fedorahosted.org/freeotp/ 상용 OTP :: DUO OTP / AUTHY 10 개계정까지는 Free 로사용가능함, authy 의경우인증수로과금 https://www.duosecurity.com/ CEO 는 Dug Song( 송덕준 ) 으로한국계 SSH, RDP, VPN, WIKI, JIRA, OWA, WEB site 등대부분의 Application 을지원함 OTP 적용에 API 를이용하여수십분소요 기존 Free/Google OTP migration 가능함
유용한기능들 Push 기능, Passcode 입력 (TOTP), SMS 등다양한옵션지원가능 Portal 을통한관리자의관리 ( 로그모니터링 )
요구조건에맞는툴활용하기 공격자에의해서버설정이변경되어도자동으로복구될수없을까?
CONFIG MANAGEMENT TOOL 활용 수십 ~ 수백대의서버를어떻게동일한 config 로유지할것인가? 만약누군가가수작업으로 config 를수정할수도있을텐데, 이런경우는어떻게? 공격자가임의로 iptables 에특정 IP 를허용하는룰추가? 설정을변경했는데, 문제가발생하면어떻게? 롤백가능? => 버전관리, wiki 등..E-mail? 적은인력으로수천대를어떻게관리할것인가? history/sharing/consistency!!
요구조건에맞는툴활용하기 웹스캐너, 웹방화벽도필요한데.
COMODO FREE WAF Modsecurity 기반, Free 로제공 Comodo 에서 customizing 한 rule 제공 Agent 를통해룰자동업데이트가능 https://modsecurity.comodo.com/
COMODO WAF GUI 관리 cpanel, Webmin, web hosting panel 등연동시 GUI 로룰관리가능함
NAXSI WAF Nginx 기반의가벼운 WAF :: Nginx Anti XSS & SQL Injection. https://github.com/nbs-system/naxsi 기존 modsec 의문제점해소가능. 너무많은 false positive, 너무복잡함, performance 저하등 Simple 한룰활용, 일정임계값에이를경우 action 수행
TESTCOOKIE TO FIGHT AGAINST BOT L7 DDoS 를차단하기위한가장확실한방법 https://github.com/kyprizel/testcookie-nginx-module Bot 과브라우저를구분하기위해 30x + SetCookie 또는 200 + JS with SetCookie 등의기술을활용 location / { testcookie on; testcookie_name LINUX; testcookie_session $remote_addr; } Set-Cookie: LINUX=4ed8c4effbeededbf41aa98bd8d32e1d; GET / HTTP/1.1. Cookie:LINUX=4ed8c4effbeededbf41aa98bd8d32e1d;
TESTCOOKIE TO FIGHT AGAINST BOT 0.0.0.0:80 1.2.3.4 3.3.3.3 test.example.com DNS Change from 3.3.3.3 => 1.2.3.4 127.0.0.1:8080
ARACHNI, WEB SCANNER http://www.arachni-scanner.com/ Low false positive, finds lots of vulnerabilities Supports CLI as well as GUI Supports Beautiful Report http://sectoolmarket.com/wivet-score-unified-list.html
요구조건에맞는툴활용하기 공격자에의해서버설정이변경되어도 ISMS나 PCI등자동으로 Compliance 복구도될통과해야수없을까하는데?, 표준보안가이드없나?
OPENSCAP 활용 OpenSCAP(Security Content Automation Protocol) :: http://www.open-scap.org/ OpenSCAP 는 Open 되어있고 Free 이며매우활발히업데이트되고있다. scan 할항목을 customize 할수있어환경에따라불필요한항목은제외하고스캔할수있다. 유사한프로젝트로 Lynis 가있음
OPENSCAP 활용 yum -y install openscap openscap-utils scap-security-guide # oscap xccdf eval --profile stig-rhel6-server-upstream --results /tmp/oscap-results.xml -- report /tmp/oscap-results.html --cpe /usr/share/xml/scap/ssg/content/ssg-rhel6-cpedictionary.xml /usr/share/xml/scap/ssg/content/ssg-rhel6-xccdf.xml
OPENSCAP,LYNIS 활용 --remediate option 시자동으로 fix Lynis :: https://cisofy.com/lynis/ Lynis 는 Linux,MacOS, unix 에대한 audit 지원
KALI LINUX https://www.exploit-db.com/ 의 offensive-security 에서운영하는데비안기반배포판 이전에는백트랙, 2013 년 Kali 라는이름으로바꾸어배포 (https://www.kali.org/) 정보수집, 취약성점검, 웹어플리케이션분석, 패스워드크랙, 무선해킹, 리버스엔지니어링, 스니핑및 spoofing 툴, 포렌식, 리포팅툴등다양한분야별로가장대표적인 300 여개의프로그램들을제공 복잡한설치과정없이즉시사용가능
KALI TOOLS IN UBUNTU git clone https://github.com/lionsec/katoolin.git && cp katoolin/katoolin.py /usr/bin/katoolin
PENTEST 를위한다른배포판들 Pentoo Parrot security OS LionSEC Samurai...
패치만해도안전? 패치로 80% 의위협은제거할수있다. 시스템에서는아직도알려지지않은취약성이더많을수있다. 강력한접근통제는보안의기본이다. 모든 Application 의실행권한은최소한으로유지한다. 취약성공개전후공격발생시간에대한통계 :: 적지않은공격이 CVE 공개전부터수행됨
감사합니다. antihong@gmail.com