前言
由于網站注冊入口容易被機器執行自動化程序攻擊,存在如下風險:
- 暴力破解密碼,造成用戶信息泄露,不符合國家等級保護的要求。
- 短信盜刷帶來的拒絕服務風險 ,造成用戶無法登陸、注冊,大量收到垃圾短信的用戶投訴導致短信通道被關停。
- 帶來經濟損失,尤其是后付費客戶,需要承擔被盜刷造成的大額短信費 ,造成虧損無底洞。
所以大部分網站及App 都采取圖形驗證碼或滑動驗證碼等交互解決方案, 但在機器學習能力提高的當下,連百度這樣的大廠都遭受攻擊導致點名批評, 圖形驗證及交互驗證方式的安全性到底如何? 請看具體分析
一、 AI智能的發展給行為驗證帶來威脅
驗證碼本質上自帶一層答案的語義,這原本是天然的區分人和自動程序的地方,但在今日卻未必,由于AI智能及CHATGPT等大模型的發展,機器要識別也變得更加容易。
1、 目標識別框架
黑產破解者為了降低攻擊成本、提高破解效率,通常會利用收集的大量驗證碼圖片樣本,打碼標注、構建模型網絡、訓練模型、測試模型,從而得到一個可持續識別圖片答案的識別。目前,黑產針對驗證碼圖片的破解最常用的主要是分類模型和相似模型。
2、 批量下載存儲驗證圖片,共需要大數萬張圖片。
3、 黑產訓練出一個高準確度的識別模型后,后續破解驗證碼時,通過識別模型就能直接獲取答案坐標。
4、 借力大模型進行升級
俗話說:道高一尺,魔高一丈,在chatgpt大模型發展的今天,行為驗證的方式無論怎么變花樣,被破解只是時間而已,被傷害的反而是真實用戶。
二、 易訂貨PC 注冊入口
深圳市銥云云計算有限公司(以下簡稱銥云)成立于2013年,是新商業軟件時代極具影響力的數字供應鏈解決方案服務商。聚焦商品流通領域的企業數字化服務,為工貿、商貿和連鎖業態企業的品牌商和渠道商,提供涵括全渠道一體化的數字供應鏈服務。是企業移動訂貨商城(易訂貨)的創立者,也是數字供應鏈的掌舵手。
1. 注冊引導頁
2. 會員注頁面
三、 安全性分析報告:
該網站采用的是阿里的滑動條, 阿里的滑動條設計高度重視用戶體驗,但安全方面存在一定的設計缺陷,前端將密鑰顯示出來,造成一定程度的安全漏洞,上報后并未引起重視,漏洞依據存在。
四、 測試方法:
前端界面分析,這是阿里的滑動條改進版本,形式換成點擊的形式,網上有一些的教學視頻,但形式都差不多,
阿里的滑動條有點像程咬金的三板斧,
1 檢測是否是 webdriver (有專門的文章怎么過檢)
2 點擊事件檢測
- 模擬器交互部分
private final String INDEX_URL = "https://accounts.77ircloud.com/pages/register";@Overridepublic RetEntity send(WebDriver driver, String areaCode, String phone) {RetEntity retEntity = new RetEntity();try {driver.get(INDEX_URL);driver.manage().window().maximize(); // 設置瀏覽器窗口最大化Thread.sleep(1 * 1000);// 輸入手機號WebElement phoneElement = driver.findElement(By.id("mobile"));phoneElement.sendKeys(phone);// 點擊// driver.findElement(By.className("sm-ico-wave")).click();int beginX = 1037;int beginY = 509;RobotMove.click(beginX, beginY);WebElement gtElement = ChromeDriverManager.waitElement(driver, By.className("ant-message"), 10);String gtInfo = (gtElement != null) ? gtElement.getText() : null;if (gtInfo != null && gtInfo.contains("超過限制次數")) {retEntity.setMsg(gtInfo);return retEntity;}return null;} catch (Exception e) {System.out.println("phone=" + phone + ",e=" + e.toString());for (StackTraceElement ele : e.getStackTrace()) {System.out.println(ele.toString());}return null;} finally {driver.manage().deleteAllCookies();}}
2. 模擬點擊
/*** 物理鼠標點擊* * @param beginX* @param beginY*/public static void click(int beginX, int beginY) {Robot robot = null;Double curX = null, curY = null;try {// 從當前位置移動到滑動條位置robot = new Robot();Point location = MouseInfo.getPointerInfo().getLocation();curX = location.getX();curY = location.getY();Double xAdd = beginX - curX;Double yAdd = beginY - curY;Double p = (xAdd.compareTo(yAdd) >= 0) ? Math.abs(yAdd) : Math.abs(xAdd);Double moveX = curX;Double moveY = curY;Random random = new Random();for (int k = 0; k < p.intValue(); k++) {moveX += xAdd / p;moveY += yAdd / p;robot.mouseMove(moveX.intValue(), moveY.intValue());robot.delay(random.nextInt(3));// 0-3}Thread.sleep(random.nextInt(5));robot.mouseMove(beginX, beginY);robot.delay(random.nextInt(3));// 0-3robot.mousePress(InputEvent.BUTTON1_MASK); // 按下左鍵} catch (Throwable e) {System.out.print("RobotMove() " + e.toString());} finally {if (robot != null) {robot.mouseRelease(InputEvent.BUTTON1_MASK); // 松開左鍵robot.mouseMove(curX.intValue(), curY.intValue());}}}
五丶結語
易訂貨作為聚焦商品流通領域的企業數字化服務,為工貿、商貿和連鎖業態企業的品牌商和渠道商,提供涵括全渠道一體化的數字供應鏈服務。技術實力雄厚, 人才濟濟,但在驗證產品方面,不是自己研發而是采用第三方的阿里的滑動條, 阿里的產品由于過度重視用戶體驗, 簡單的滑動條特別,模擬器只需要單軸的模擬軌道就可以通過, 說明阿里對軌跡的校驗比較寬松,之前的分析顯示,阿里主要是靠模擬器識別,如果這道關過了,就沒有其它的防護措施了 。
很多人在短信服務剛開始建設的階段,可能不會在安全方面考慮太多,理由有很多。
比如:“ 需求這么趕,當然是先實現功能啊 ”,“ 業務量很小啦,系統就這么點人用,不怕的 ” , “ 我們怎么會被盯上呢,不可能的 ”等等。有一些理由雖然有道理,但是該來的總是會來的。前期欠下來的債,總是要還的。越早還,問題就越小,損失就越低。
所以大家在安全方面還是要重視。(血淋淋的栗子!)#安全短信#
戳這里→康康你手機號在過多少網站注冊過!!!
谷歌圖形驗證碼在AI 面前已經形同虛設,所以谷歌宣布退出驗證碼服務, 那么當所有的圖形驗證碼都被破解時,大家又該如何做好防御呢?
>>相關閱讀
《騰訊防水墻滑動拼圖驗證碼》
《百度旋轉圖片驗證碼》
《網易易盾滑動拼圖驗證碼》
《頂象區域面積點選驗證碼》
《頂象滑動拼圖驗證碼》
《極驗滑動拼圖驗證碼》
《使用深度學習來破解 captcha 驗證碼》
《驗證碼終結者-基于CNN+BLSTM+CTC的訓練部署套件》