WhiteOps收集的数据(对您进行指纹识别)

2020-07-09 16:22:36

斯米托普·2020年7月8日·8分钟阅读今天我注意到New Reddit要求使用DRM。所以我开始了源代码分析之旅!有关更多细节,请参见主要帖子。

看起来Reddit使用White Ops进行指纹识别和预防广告欺诈(但只有在某些情况下,我认为这是一种A/B测试)。请看这段经过美化的代码:

const t=e.user。账户?jt()(即用户。帐户。ID)。toString():void 0,s=document。createElement(";script";);s.src=对象。a)(";https://s.udkcrj.com/ag/386183/clear.js";,{dt:";3861831591810830724000";,pd:";acc";,mo:0,et:0,ti:$t()(),ui:t,si:";d2X";}),文档。头。AppendChild(S)。

此代码仅在启用了SHOW_WHITE_OPS功能标志时才会运行(不知道如何强制其为真),这就是为什么我假设跟踪是由WhiteOps完成的。对https://s.udkcrj.com/ag/386183/clear.js文件的进一步研究显示,它最终会加载另一个脚本https://s.udkcrj.com/2/4.71.0/main.js.。以下是我看到并分析的美化后的源代码,以供参考。

const deob=x=>;x.替换(/[A-Za-z]/g,函数(E){返回字符串。FromCharCode(e.charCodeAt(0)+(e.toUpperCase()<;=";M";?13:-13))})。

这个非常混乱的脚本做了很多事情,包括(这是一个不完整的列表,我遗漏了很多东西):

有一堆广告服务器的名字,大概是为了不向机器人提供广告。

尝试创建ActiveXObject(仅存在于旧IE版本中),并检查创建的ActiveX对象是否已沙箱

试图利用IE11漏洞!它检查Document.document模式的值,IE11中的值是11。如果是,则运行模糊处理后的代码:

它的计算结果为res://ieframe.dll/acr.js,但仅在IE上。我认为这个字符串只有一个用途,即您可以将任意HTML放入URL的散列部分并对其求值,这是在某种保密上下文中实现的。此文件实际上在IE中解析为内部Windows系统文件,由于错误,只有在JS中才能访问该文件。

execScript(";e71012934811a=False::On Error Resume Next::";+e+";::If Err.Number=-2147024891或Err.Number=5002Then e71012934811a=TRUE::Err.Clear";,";vbscript";),t=";e71012934811a";窗户。e71012934811a?不存在:不知道。

在Window上检查这些字符串(去模糊处理后,我还有原始的模糊处理后的字符串,以防您也在查看源代码):

检查窗口上的以下与自动化相关的属性:domAutomation、domAutomationController、_WebDriver_ELEM_CACHE、_PANTOM、callPhantom、window.chrome、_CommandLineAPI、window.Debug.debuggerEnabled、__BROWSERTOOLS_CONSOLE、Window._FirebugCommandLine,以及document.documentElement.hasAttribute(";webdriver";)是否为TRUE。

检查";function(){return Function.apply.call(x.log,x,Arguments);}";==window.console.log.toString()(我猜也是为了检查浏览器自动化。

在window.ternal中检查这些属性。外部:[";AddChannel";,";AddDesktopComponent";,";AddFavorite";,";AddSearchProvider";,";AddService";,";AddToFavoritesBar";,";AutoCompleteSaveForm";,";AutoSCAN。,";InPrivateFilteringEnabled";,";IsSearchProviderInstalled";,";IsServiceInstalled";,";IsSubscribed";,";msActiveXFilteringEnabled";,";msAddSiteMode";,";msAddTrackingProtectionList";,";msIsSiteMode";,";msIsSiteModeFirstRun";,";msPinnedSiteState";,";msProvisionNetworks";,";msRemoveScheduledTileNotification";,";msReportSafeUrl";,";msSchedululedTileNotification";,";msReportSafeUrl";,";,";msSiteModeClearIconOverlay";,";msSiteModeClearJumpList";,";msSiteModeCreateJumpList";,";msSiteModeRefresh Badge";,";msSiteModeSetIconOverlay";,";msSiteModeSetIconOverlay";,";,";msStopPeriodicBadgeUpdate";,";msStopPeriodicTileUpdate";,";msTrackingProtectionEnabled";,";NavigateAndFind";,";riseEvent";,";setContextMenu";,";ShowBrowserUI";,"。,";Visibility";,";mssitepinned";,";AddUrlAuthentication";,";CloseRegPopup";,";FeatureEnabled";,";GetJsonWebData";,";GetRegValue";,";Log";,";LogShellErrorsOn.。,";SaveRegInfo";,";SetAppMaximizeTimeToRestart";,";SetAppMinimizeTimeToRestart";,";SetAutoStart";,";SetAutoStartMinimized";,";SetMaxMemory";,";ShareEventFromBrowser";,";S。还有";AddSearchProvider";,";IsSearchProviderInstalled";,";QueryInterface";,";addPanel";,";addPersistentPanel";,";addSearchEngine";

m(";Document_Referrer";,h),m(";PERFORMANCE_TIMING";,h,Function(E){return x.qKjvb(E)}),m(";maxConnectionsPerServer";,h),m(";Status";,h),m(";defaultStatus";,h),m(";PERFORMANCE_Memory"。、h、_。拼合)、m(";屏幕";,h,函数(E){return e||{}})、m(";devicePixelRatio";,h)、m(";mozPaintCount";,h)、m(";style Media_type";,h)、m(";History_length";,h)、m(";opener。,h,";top_opener";,function(E){return null!==e?类型e:";NULL";}),m(";Navigator_userAgent";,h),m(";fileCreatedDate";,h),m(";fileModifiedDate";,h),m(";file

检查mozIsLocallyAvailable(仅在FF<;=35时可用,可能用于检查是否有人试图脱机调试此脚本)。

尝试加载URL为https:/的图像,并检查它是否加载或出错。

checks for these properties on window:StorageItem AnimationTimeline MSFrameUILocalization HTMLDialogElement mozCancelRequestAnimationFrame SVGRenderingIntent SQLException WebKitMediaKeyError SVGGeometryElement SVGMpathElement Permissions devicePixelRatio GetSVGDocument HTMLHtmlElement CSSCharsetRule ondragexit MediaSource external DOMMatrix InternalError ArchiveRequest ByteLengthQueuingStrategy ScreenOrientation onwebkitwillrevealbottom onorientationchange WebKitGamepad GeckoActiveXObject mozInnerScreenX WeakSet PaymentRequest Generator BhxWebRequest oncancel fluid media onmousemove HTMLCollection OpenWindowEventDetail FileError SmartCardEvent guest CSSConditionRule showModelessDialog SecurityPolicyViolationEvent EventSource ServiceWorker EventTarget origin VRDisplay onpointermove HTMLBodyElement vc2hxtaq9c TouchEvent DeviceStorage DeviceLightEvent External webkitPostMessage HTMLAppletElement ErrorEvent URLSearchParams BluetoothRemoteGATTDescriptor RTCStatsReport EventException PERSISTENT MediaKeyStatusMap HTMLOptionsCollection dolphinInfo MSGesture SVGPathSegLinetoRel webkitConvertPointFromNodeToPage doNotTrack CryptoDialogs HTMLPictureElement MediaController。

检查这些CSS属性:滚动-捕捉-坐标基于弹性的webkit MatchNearestMailBlockQuoteColor MozOpacity text溢出位置列msTextSizeAdjustAnimationDuration msImeAlign webkitBackground复合MozTextAlignLast MozOsxFont平滑边框RightStyle webkit GridRow css文本父项规则webkit ShapeOutside对齐Self隔离-Moz-Column-。

检查本机函数的字符串化,并验证某些函数是否在本机代码中实现(包括Performance.mark和Function.Prototype.toString本身)。

尝试以所有这些字体获取字符串mmmmmmmmlli的宽度:";Ubuntu&34;,";Utopia";,";URW哥特式L";,";Bitstream Charge";,";FreeMono&34;,";DejaVu Sans";,";Droid Serif";,";解放性字体。,";Sylfaen";,";CordiaUPC";,";Angsana New Bold Italic";,";DFKAI-SB";,";Ebrima&34;,";老挝UI";,";Segoe UI Symbol";,";Vijaya";,";Roboto";,,";Marker Feel";,";苹果符号";,";黑板";,";Herculanum";,";Skia";,";Bahnschrift";,";Andalus";,";Yu哥特式;,";Aldhabi";,";Calibri Light。

尝试加载Chrome://Browser/Skin/Feed/FeedIcon.png(我认为这在旧的Firefox版本中曾是一个RSS图标)。

检查可用的视频编解码器和格式:';video/mp4;编解码器=";avc1.42E01E,mp4a.40.2";';,';video/mp4;编解码器=";avc1.58A01E,mp4a.40.2";';,';video/mp4;编解码器=";avc1.4D401E,mp。';,';video/mp4;编解码器=";mp4v.20.8,mp4a.40.2";';,';video/mp4;编解码器=";mp4v.20.240,mp4a.40.2";';,';video/3GPP;编解码器=";mp4v.20.8,samr";'。,';视频/Ogg;编解码器=";Theora,speex&34;';,";音频/Ogg;编解码器=Vorbis";,";音频/Ogg;编解码器=Speex&34;,";音频/Ogg;编解码器=flac";,';Video/Ogg;编解码器=";Dirac,VRAC。视频/MP4;编解码器=";avc1.42E01E";';,';音频/MP4;编解码器=";mp4a.40.2";';,';音频/mpeg;编解码器=";mp3";';,';视频/WebM;编解码器=";VP8";&

检查窗口。$cdc_asdjflasutopfhvcZLmcfl_(Chrome Webdriver使用的属性)(混淆为";$";+x.qKjBI(";pqp";)+";_";+x.qKjBI(";nfqwsynfhgbcsuipMYzpsy";)+&#。

检查可用的DRM解决方案(虽然没有实际使用,但这是导致Firefox中DRM弹出的原因):查找Widevine、PlayReady、Clearkey和Primetime。

尝试加载存储在Chrome扩展的数据中的文件(可能是为了检测它们是否已安装):

有一个字符串“haha jit go brrrrr”,这似乎是对js引擎bug或漏洞的某种测试的一部分。