How to demonstrate ClickJacking with Jack

บทนำ (Overview)

jack “Jack” คือเครื่องมือที่ช่วยแสดงให้เห็นถึงการทำ ClickJacking โดยเขียนมาจาก “HTML” และ “JavaScript” จึงสามารถดาวน์โหลดและเรียกใช้งานผ่านเว็บบราเซอร์ได้ทันที

ส่วน “ClickJacking” เป็นการโจมตีโดยหลอกให้เรา Click ปุ่มต่าง ๆ เช่น ปุ่มค้นหา ปุ่ม “login” หรือลิงค์ต่าง ๆ บนหน้าเว็บเพจแต่ link เหล่านี้ถูกครอบโดย “Script” ของ “Hacker” กล่าวคือมีการซ่อน “Script” ที่มองไม่เห็นเมื่อคลิกลิงค์ แทนที่ลิงค์จะไปตามที่กำหนดกลับไปเป็นของ “Hacker”

ต่ำกว่า 18 ห้ามคลิก!! (ClickJacking) ซึ่งช่องโหว่ที่นำไปสู่การโจมตีที่เรียกว่า “ClickJacking” นั้น เกิดจากเว็บไซต์อนุญาตให้ใช้ HTML Syntax “<iframe></iframe>” จาก “Domain” อื่นที่ไม่ใช่ “Domain” จากเว็บไซต์เรา ดังนั้นเมื่อ “Hacker” เรียกหน้าเว็บไซต์เราโดยใช้ “<iframe>” เขาจึงเขียน “HTML Syntax” หรือ “JavaScript” จากนั้นจะนำไปทำ “Social Engineering” เช่น Phishing โดยใช้ email หรือโพสต์ตามเว็บบอร์ด เป็นต้น

ขั้นตอน (Steps)

  • ดาวน์โหลด “Jack” จาก https://github.com/sensepost/Jack
  • จากนั้นแตกไฟล์ “zip” และลองเปิดไฟล์  “index.html” ที่อยู่ใน “\jack-master\jack-master\static” โดยใช้ “Internet Explorer” หรือ “FireFox” ก็ได้
  • จากนั้นลองตรวจสอบว่าหน้าเว็บเพจ มีรูปแบบตามภาพหรือไม่ ถ้าใช่แสดงว่า “Path” ของ “CSS” และ “JavaScript” นั้นถูกต้อง

    jackmain
    ตัวอย่างหน้าที่สามารถโหลดไฟล์ .css และ .js ได้
  • แต่ถ้าไม่เกิดเป็นรูปแบบดังภาพ ให้ไปแก้ไข “path” ไฟล์ใน “\jack-master\jack-master\static\” เป็น ../resources/ ดังรูปข้างล่าง
    ไฟล์ index.html

    <head>
        <meta charset="UTF-8">
        <title>SensePost</title>
        <link rel="shortcut icon" type="image/x-icon"
              href="../resources/img/logo.ico">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <!-- Bootstrap -->
        <link href="../resources/css/bootstrap.css" rel="stylesheet"
              media="screen">
        <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
        <script type="text/javascript" src="../resources/js/jquery-1.11.0.js"></script>
        <script type="text/javascript" src="../resources/js/bootstrap.min.js"></script>
    </head>
    

    ไฟล์ “sandbox.html”

        <script type="text/javascript" src="../resources/js/jquery-1.11.0.js"></script>
        <link rel="shortcut icon" type="image/x-icon"
              href="../resources/img/logo.ico">
    
  • ทดสอบโดยเอา “URL” ของเว็บไซต์ที่ต้องการแสดงการทำ “ClickJacking” ใส่ในช่อง “URL” แล้วคลิกปุ่ม “Load” ถ้าโหลดไม่ขึ้น หรือมีข้อความผิดพลาดต่าง ๆ เป็นไปได้ว่าเว็บไซต์ป้องกันมิให้ใช้ “<iframe>” syntax

    clickjackingweb
    หน้าโหลดเว็บที่มิได้ป้องกัน “Clickjacking”
  • เราสามารถตั้งค่า “URL” ของเว็บไซต์ที่ต้องการทดสอบ ให้สามารถโหลด เพื่อใช้ในการทดสอบได้ทันทีโดยไม่จำเป็น ต้องมากรอกที่ช่อง “URL” อีก โดยแก้ไขที่ “index.html” ตามข้าง
    var defaultReadTarget = "https://domain.com/";
    
  • เมื่อเราปรับแต่งค่า “textbox” ปุ่ม และ “css” และ “script” เรียบร้อยแล้ว จากนั้นเราก็มาคลิกปุ่ม “View” เพื่อแสดงให้เห็นถึง “link” เพื่อทำ “ClickJacking”
  • เราสามารถปรับแต่งโดย “textbox” และ “ปุ่ม” โดยใช้ “css” ตัวอย่างเช่น
    width: 300px; /*ปรับความกว้าง*/
    height: 25px; /*ปรับความสูง*/
    opacity:0.4; /*ทำให้โปร่งใสเพื่อให้ผู้ใช้งานมองไม่เห็น และหน้าเว็บเพจยังคงเดิม*/
    background-color:#fffffcc; /*ทำสีพื่น*/
    font-family: sans-serif; /*ปรับประเภทตัวอักษร*/
    font-size: 14pt; /*ปรับขนาดตัวอักษร*/
    
  • ถ้าไม่สามารถคลิกปุ่ม “View” ได้ ให้ทำการแก้ไขโดยการตรวจสอบ “Path” ที่ “Web server” ตัวอย่างเช่น “http://localhost/jack-master/static/” กับ “Path” ที่มีอยู่จริงตรงกันหรือไม่ ้เช่น “c://jack-master/static/” ถ้าไม่ ให้ไปปรับแก้ที่ไฟล์ “\jack-master\jack-master\static\index.html” จากตัวอย่างได้เพิ่ม “/jack-master/” เข้าไป
    var demoUrl = "/jack-master/jack-master/static/sandbox.html?target=" + target + '&userNameLeft=' + emailX + '&userNameTop=' + emailY + '&passwordLeft=' + passwordX + '&passwordTop=' + passwordY + '&buttonLeft=' + buttonX + '&buttonTop=' + buttonY;
    
  • เมื่อคลิก “View” จะพบว่าเว็บบราวเซอร์จะเปิดหน้าใหม่ และหน้าใหม่จะปรากฏหน้าเว็บเพจที่เป็นช่องโหว่ “ClickJacking” ซึ่งจะถูกครอบด้วย “Textbox” และ ปุ่มที่สร้างขึ้นมาใหม่ (โปร่งใส) จากตัวอย่างเราให้ความโปร่งใส 40 % เพื่อทำให้เห็นถึงการครอบ ดังรูป

    clickjackingiframe
    ตัวอย่างการครอบด้วย Textbox กับปุ่มของ Hacker ที่ทำเป็นใสๆ ประมาณ 40% (opacity)
  • เราสามารถ “Copy” ของ “URL” ไปใช้งานได้ จากตัวอย่างทดลอง “login” พบว่า “username” และ “password” แทนที่จะถูกส่งไปที่ “server” กลับถูกดักโดย “Script”  ของ “Hacker” ซึ่ง “Hacker” สามารถแก้ไข “Script” เพื่อส่งข้อมูลไปยัง “Server” ของ “Hacker” ได้อย่างง่ายดาย

    clickjackpass
    ตัวอย่างการดัก username และ password จากการ login

ใส่ความเห็น