1. 程式人生 > 其它 >【風控要略】網際網路風控業務-反欺詐之路

【風控要略】網際網路風控業務-反欺詐之路

2021大部分時間都沉浸在工作和學習任務的忙碌之中,很少有機會能夠坐下來靜靜地寫一篇博文,這次藉著年終的一絲絲喘息機會,給大家介紹下博主最近在主要學習的“風控”相關的知識。我會從風控的起源來龍去脈,講到黑產是通過什麼樣的方式對業務形成威脅,再簡單介紹一些當前的風控業務流程和技術。

本文最大的知識來源就是《風控要略》這本書了,大家有興趣的也可以自己買上一本讀一讀。

一、什麼是風控

當前網際網路安全產業大致可以分為基礎安全和業務安全兩個領域,基礎安全,類似程式碼漏洞、提權、加密等領域近些年一直為人們所談論,這一塊對大家來說已經不再陌生;尤其是最近的log4j事件,它所帶來的安全隱患之大,對我們開發同學的安全意識的加強也是可以預見的。

而我們今天要討論的,是業務安全這個細分領域——它還是一個相對年輕的領域。隨著網際網路業務的爆炸式發展,黑產團伙開始從黑客一樣的“攻擊滲透系統獲利”,逐漸演變成規模比較龐大,分工非常明確的黑色產業鏈。離我們最近的例子也有很多,例如:

京東自營店鋪在設定打折活動時操作失誤,將打折活動與滿減活動的條件設定重合,原價200多元的產品成了免費的,這讓京東面臨著巨大的損失,初步預計直接損失超過7000萬!

“7日晚上,很多‘薅羊毛群’都在發車,讓去京東撿漏,我也參與了,併成功用低價買到了一臺美的烤箱。”1月初時,她曾在京東APP上領取了小家電200、300元無門檻優惠券,1月7日晚聽說京東有年貨節促銷活動後,她便開啟京東APP嘗試下單。

當晚8時50分,吳某在美的京東自營官方旗艦店內選中一款38升容量的家用多功能電烤箱,並將其新增至購物車。“電烤箱的型號是MG38CB-AA,原價為249元,但付款的時候我使用了200元優惠券,顯示實際支付價格為49元。”考慮到最終價格比較划算,吳某便立即支付49元,成功下單。

我們在談論業務安全領域-風控的時候,我們大抵都是在談的類似於上面的案例,即:如何應對業務安全風險。

我們使用常見的風控場景繼續舉例:

1、註冊和登入場景的風控:如何對抗機器人自動註冊虛假賬號,自動刷單,刷贊刷關注等行為。

2、營銷活動的風控:活動發放的紅包、遊戲點券、或者其他的什麼獎勵如何才能夠不被批量“薅羊毛”。

3、廣告營銷保護:業務需要往往會大量購買點選廣告,如何識別這些點選是有效的真人點選廣告而不是機器人的行為?

4、爬蟲問題

......等等,風控的場景在網際網路,現在階段是必不可少的存在,可以說每一傢俱有一定規模的公司都一定會有一個風控團隊。

二、黑產的情況

我們可以知道的是,目前黑產的日交易額可高達數億,但這可能僅僅是冰山一角,而那些冰山下的更為複雜隱蔽、更加難以識別的黑產的整體規模難以估測,其未知的能力更讓人感到恐懼。

黑產現如今已經有了十分成熟的商業運作模式,產業鏈複雜、隱蔽、高效,是一個緊密結合的複雜鏈條。

黑產的基本資訊

在黑產的產業鏈的上游是一個基礎性的環節,承擔著挖掘、製作生產和供應的職責,支援著眾多型別的網路黑產,為其提供重要資料。其中包括:

1、開發者-為黑產團伙開發群控工具、管理後臺等工具

2、手機卡商-為黑產團伙批量提供驗證碼手機、註冊手機、流量卡等

3、打碼、聽碼平臺

4、各種周邊工具

而在中間的,就是各種用於突破人機識別、驗證碼、真機模擬的工具了

上圖就是一個可以自動化控制的群控平臺,它通過系統自動化控制整合技術,把多個手機操作介面直接對映到電腦顯示器,實現由一臺電腦來控制幾十臺甚至上百臺手機的效果。以某社交平臺群控為例,它是在群控體系基礎上,針對其定製化、批量模仿正常個人使用者操作的軟硬體整合體系。它以群控體系+各種批量模仿指令碼的方法,完成批量操作,其所有任務執行都是同時進行的。你面對的可能不是自動化指令碼執行,而是一臺又一臺的真實機器,只是站在幾百個機器面前的,可能只是一堆資料連線線而已。

這些由黑產團伙開發使用的群控,製造了網際網路的虛假流量,是流量黑產王國裡的重要一環。

在不斷升級的黑產打擊貓鼠遊戲中,群控已經出現了第五代,黑產開始轉向技術手段更先進、隱蔽性更強的新型雲控系統。

黑產的工具鏈條

1、虛假號碼

“虛假號碼”這個詞,目前還沒有被大多數人所接受,而關於虛假號碼的來源、危害、各種特性,外界也瞭解的很少,更不要提如何針對虛假號碼進行風險防控了。

在人們的樸素觀念中總會有這麼一個念頭:“運營商出售的卡必然是實名的,為什麼會有這麼多的假號碼呢?難道國家就不管管?”。

2、虛假號碼的來源

在網際網路黑色產業鏈條中源源不斷地有人給黑產提供大量可用的手機號。這些手機號幾乎成了所有網際網路欺詐活動的根源,我們統一把它稱之為“虛假號碼”,這並不意味著這些號碼是假的,它們很有可能是真實的、被出售的運營商內部號碼。

虛擬號碼被對接到接碼平臺、提供簡訊驗證碼代收等服務,進一步被黑產所利用。在整個黑色產業鏈中,手機卡商處於產業鏈上游並且是整個產業鏈的非常關鍵的節點。

在2017年以前,接碼平臺會從卡商(運營商)手上大量收購手機卡,不過目前這些都已經被公安機關依法取締。在這之後,很多就是我們所熟悉的那幾個種類了。

* 流量卡

比如騰訊的“大王卡”,各家網際網路公司推出的聯名流量卡,量大且便宜,很容易被黑產所利用

* 物聯網絡卡

這類卡片一般是應用在公共服務上的,例如共享單車,它們的網際網路接入方式是由運營商提供大量的sim卡片,然後將它們接入可移動的網路裝置,從而達到實時接入網際網路的目的。這類卡片有些並不能像正常的卡一樣能夠接打電話或傳送簡訊,但是在特殊情況下,它們還是可以實現接打電話或傳送簡訊的。

* 手機劫持

在手機中植入木馬,通過技術手段遮蔽被攔截的簡訊上報到線上平臺。——這類手機卡看起來就和真人一般無二,一般出現在一些老年機、兒童機上,黑產團伙預先在售價低廉的這些機器上植入自己的系統,直接在系統層面攔截收到的驗證碼簡訊並上報,從而做到真實的使用人完全沒有感知的情況下劫持手機號和身份。

3、貓池

“貓池”定義:

英文名 Modem Pool。 Modem,即調變解調器,普通的家用寬頻撥號所使用的"貓"也是一種modem。字面翻譯過來,就是貓池。

Modem中一般封裝了撥號協議,寬頻所使用的Modem,封裝的是PPPOE協議。貓池所使用的Modem,封裝的是GSM、CDMA或其他的一些通訊協議。兩種Modem都可以通過AT指令集來進行控制。

這是目前國內比較普遍的一種貓池,16個卡槽,每個卡槽,是一個GSM模組。裝置通過USB和PC連線,掛載為一個串列埠裝置。通過軟體或驅動程式,向Modem傳送AT指令,來完成特定的操作。

比如:電話呼叫13xxxxxxxx 轉換為指令是: ATD+13xxxxxxxx\r\n

基於這樣的批量命令式技術,黑產團伙開發了一系列自動控制軟體:

通過軟體,這些人可以實現批量通話、批量簡訊等常見的操作。

與黑產的對抗

在業務安全領域中,與黑產的對抗是永恆的話題,而且很大程度上是資源和技術的對抗。新的欺詐手段千奇百怪,它趨勢網際網路平臺和風控廠商不斷的更新迭代更先進的防控體系,甚至現在的大型廠家通過大資料和人工智慧的手段動態的去計算指標生成標籤等手段來防禦,這些都是這些黑產團伙所帶來的衍生因素。

三、驗證碼的前世今生

驗證碼的早期

根據百科的描述,驗證碼的歷史要追溯到十多年前,那個時候黑客們肆無忌憚地編寫指令碼程式來模擬登入破解賬戶密碼,還通過惡意程式碼在論壇或者郵箱自動釋出詐騙資訊及垃圾廣告,使得使用者和企業主們深受其害。

直到路易斯·馮·安(Louis Von Ahn)在雅虎提出一個解決方案:“在使用者操作過程中,把機器人從正常使用者裡揪出來”。

大致的思路就是通過一些人類能輕鬆做到但機器做不到的事情來進行鑑定。

Louis甚至專門寫了一篇論文來給這個技術做了一個更加清晰的定義 CAPTCHA- Using Hard AI Problems For Security。
這裡列舉一下它的摘要:
Abstract. We introduce captcha, an automated test that humans can pass, but current computer programs can’t pass: any program that has high success over a captcha can be used to solve an unsolved Artificial Intelligence (AI) problem. We provide several novel constructions of captchas. Since captchas have many applications in practical security, our approach introduces a new class of hard problems that can be exploited for security purposes. Much like research in cryptography has had a positive impact on algorithms for factoring and discrete log, we hope that the use of hard AI problems for security purposes allows us to advance the field of Artificial Intelligence. We introduce two families of AI problems that can be used to construct captchas and we show that solutions to such problems can be used for steganographic communication. captchas based on these AI problem families, then, imply a win-win situation: either the problems remain unsolved and there is a way to differentiate humans from computers, or the problems are solved and there is a way to communicate covertly on some channels.
在這片論文的講述中,Louis認為驗證碼會是一個“雙贏”的產品。因為如果這些問題無法通過機器來自動化解答,那麼它就能達到區分人機的效果,反之,如果這個問題被AI攻破了,那麼在機器學習領域裡,會是一個非常重大的進展。——實際上我們在這十幾二十年中所看到的正是如此。 在Louis之後,圖形化驗證碼在被證明有效後,在網際網路上迅速得到了推廣。國內外各大網站,在關鍵的業務點上都加入了這一型別的驗證碼。這種驗證碼通常是一些字元加上一些扭曲的方法,生成一張圖片返回給前端展示,然後匹配使用者輸入是否正確: 早期的驗證碼大抵都長這樣:

後來,在機器學習的發展下,這樣的驗證碼明顯是擋不住攻擊者的了;即使是入門級的“knn”演算法也可以很輕鬆的達到非常高的識別準確率。

工程師們逐漸加大了識別的難度:

這樣的:

也有這樣的:

這些驗證碼在這個時期有效的防止了大量的攻擊請求。

驗證碼的發展

圖片字元的驗證碼,隨著機器學習的發展變得越來越複雜,扭曲程度越來越高,這樣不可避免的會遇到一系列問題:

1、首先這些圖片對有著視覺缺陷的人士非常的不友好,他們幾乎無法辨別如此複雜的圖形

2、其次機器學習在這些領域有了非常明顯的進步

3、有些驗證碼甚至連正常人都無法分辨,影響使用者體驗

在這之後,陸續出現了一些識圖驗證碼,例如我們都知道的12306的圖片驗證碼:

但是12306的驗證碼推出後不久就被攻陷了,攻擊者們先通過人工打碼平臺,以非常低廉的成本招聘一些社會人員進行圖片的人工識別,並對其打上對應的標籤,然後生成自己的圖片列舉庫,漸漸的就把12306的圖片資料庫翻了個底朝天。

後來有些廠商推出了自動生成圖片的驗證碼,每一次的圖片都是由AI自動生成的,是獨一無二的,避免了被列舉的可能。但是這類驗證碼普遍體驗更差,連正常人都很難識別的東西大大降低了站點的使用者體驗。

智慧驗證碼

只能驗證碼拋棄了傳統字元型驗證碼展示-填寫字元-比對答案的流程,採用驗證碼展示-採集使用者行為-分析使用者行為流程,使用者只需要產生指定的行為軌跡,不需要鍵盤手動輸入,極大優化了傳統驗證碼使用者體驗不佳的問題;同時驗證碼後臺針對使用者產生的行為軌跡資料進行機器學習建模,結合訪問頻率、地理位置、歷史記錄等多個維度資訊,快速、準確的返回人機判定結果。

智慧驗證碼還可以通過智慧的風控判斷,當一個使用者被識別為高危使用者時才會彈出對應等級的驗證碼告知使用者填寫。在這方面比較典型的就是阿里雲:

當系統判定你屬於風險登入的時候,將會提高驗證等級,你必須通過多因素驗證才能夠正常登入你的賬號。

四、風控技術體系

上圖來自美團技術團隊釋出的文章:https://tech.meituan.com/2017/01/13/risk-control-system-experience-sharing.html

我們可以比較清晰的看見,在整個風控技術體系中,資料處理和資料計算是比較關鍵的環節,它一般是通過實時計算平臺對使用者海量的資料進行計算。使用spark streaming進行妙計的資料指標計算,使用flink進行毫秒級別的指標計算等。

規則平臺

規則引擎是風控決策的核心,模組主要包括:
1、規則管理 2、規則推送 3、規則執行 等。 它是一個同時面向技術和業務的一體化平臺,規則平臺的主要特點有: 1、流程分支複雜,條件多 2、不確定需求多 3、業務規則時效性要求 4、業務可線上配置規則,無需二次開發 網際網路風控團隊面向風控業務的規則引擎的研發,可以基於Groovy等指令碼引擎開發;也可以基於自身的需求在開源商業規則引擎上進行二次開發,例如drools、ITOG Jrules等。

實時計算平臺

在風控業務中,為了實時進行業務事件的風險判斷,我們經常要做這樣的事情:

1、在使用者登入的時候,根據使用者過去的登入行為判斷他的風險程度。

2、在使用者付款的時候,根據使用者的風險路徑,實時判斷是否可以使用一鍵付款等業務。

3、給使用者貸款,實時判斷使用者的信譽等級

等等。

這些都離不開實時的指標計算系統,我們需要通過一個可以秒級、甚至是毫秒級的指標計算系統來完成這樣的工作,而目前市面上大抵基於兩種技術開發:

SparkStreaming和Flink。

SparkStreaming

Spark Streaming 支援的資料輸入源很多,例如:Kafka、 Flume、Twitter、ZeroMQ 和簡單的 TCP 套接字等等。資料輸入後可以用 Spark 的高度抽象原語如:map、reduce、join、window 等進行運算。而結果也能儲存在很多地方,如HDFS,資料庫等。另外Spark Streaming 也能和 MLlib(機器學習)以及 Graphx 完美融合。

SparkStreaming特點

  1. 易用;
  2. 容錯;
  3. 易整合到Spark體系中;

在SparkStreaming之前, 使用者往往要藉助多種開源元件才能夠構建出流處理和批處理系統,SparkStreaming的出現不僅能很好的解決這些問題,還統一了技術框架,使用了跟Spark一致的程式設計模型和處理引擎。

Flink

現在,各大廠商都在探索機遇flink的實時計算方式,熟悉的比如愛奇藝、唯品會、oppo等大型網際網路公司都在用它,不久前flink也被阿里收購。

flink是一個真正的流式系統——為什麼要這麼說呢?因為spark是基於批處理形式的“類”實時系統,spark只能夠做到秒級的資料計算,而flink輕鬆就能達到毫秒級別。

資料流的執行流程

Flink程式在執行後被對映到流資料流,每個Flink資料流以一個或多個源(資料輸入,例如訊息佇列或檔案系統)開始,並以一個或多個接收器(資料輸出,如訊息佇列、檔案系統或資料庫等)結束。Flink可以對流執行任意數量的變換,這些流可以被編排為有向無環資料流圖,允許應用程式分支和合並資料流。

Flink的資料來源和接收器

Flink提供現成的源和接收聯結器,包括Apache Kafka、Amazon Kinesis、HDFS和Apache Cassandra等。 Flink程式可以作為叢集內的分散式系統執行,也可以以獨立模式或在YARN、Mesos、基於Docker的環境和其他資源管理框架下進行部署。

Flink的狀態(state)

Flink檢查點和容錯:檢查點是應用程式狀態和源流中位置的自動非同步快照。在發生故障的情況下,啟用了檢查點的Flink程式將在恢復時從上一個完成的檢查點恢復處理,確保Flink在應用程式中保持一次性(exactly-once)狀態語義。檢查點機制暴露應用程式程式碼的介面,以便將外部系統包括在檢查點機制中(如開啟和提交資料庫系統的事務)。 Flink儲存點的機制是一種手動觸發的檢查點。使用者可以生成儲存點,停止正在執行的Flink程式,然後從流中的相同應用程式狀態和位置恢復程式。 儲存點可以在不丟失應用程式狀態的情況下對Flink程式或Flink群集進行更新。

Flink的資料流API

Flink的資料流API支援有界或無界資料流上的轉換(如過濾器、聚合和視窗函式),包含了20多種不同型別的轉換,可以在Java和Scala中使用。

五、風控業務體系

至此,我們把風控的來龍去脈介紹了一遍,讓我們來系統性的總結一下風控的要點

1、網際網路不僅僅只有基礎安全領域,還存在著龐大的業務安全領域。

2、黑產團伙的作案方式層出不窮,薅羊毛的也可能是正常的投機使用者。

3、我們可以通過風控體系,從業務的角度出發,將使用者的實時資料進行指標計算,從而生成單個使用者特有的風險標籤、黑名單體系等功能。

4、機器學習、實時計算、業務連線是風控的重點,其中業務邏輯是風控的核心。

5、風控是一個系統的工程,一個成熟的網際網路團隊必然會擁有她專屬的風控團隊。

六、參考文字

https://zhuanlan.zhihu.com/p/450156449 基於Apache Flink的愛奇藝實時計算平臺建設實踐

https://link.springer.com/content/pdf/10.1007%2F3-540-39200-9_18.pdf CAPTCHA: Using Hard AI Problems for Security

https://zhuanlan.zhihu.com/p/23326828 驗證碼的前世今生

最後,推薦閱讀:《風控要略》

======================================================== 轉載請註明出處。