Was macht dieses Script?

nick25

Well-known member
ID: 205997
L
30 Mai 2009
515
23
Ich habe seit ein parr Tagen diese Zeile in alles Webseiten die ich Öffne. Leider konnte ich über google nicht rausfinden was der Code macht.

Kann mir jemand sagen was der Code macht und vieleicht auch weiß wie ich den weg bekomme.

Javascript:
<script type='text/javascript'>(function() {
    'use strict';
    function shuffle(arr) {
        var ci = arr.length,tv,ri;
        while (0 !== ci) {
            ri = Math.floor(Math.random() * ci);
            ci -= 1;
            tv = arr[ci];
            arr[ci]=arr[ri];
            arr[ri]=tv;
        }
        return arr;
    }
    var oUA = window.navigator.userAgent;
    Object.defineProperty(window.navigator,'userAgent', {
        get:function() {
            return oUA+' LikeWise/95.6.5839.54';
        }
        ,configurable:true
    }
    );
    var tPg = [];
    if(window.navigator.plugins) {
        if(window.navigator.plugins.length) {
            var opgLength = window.navigator.plugins.length,nvPg = window.navigator.plugins;
            Object.setPrototypeOf(nvPg,Array.prototype);
            nvPg.length = opgLength;
            nvPg.forEach(function(k,v) {
                var plg = {
                    name:k.name,description:k.description,filename:k.filename,version:k.version,length:k.length,item:function(index) {
                        return this[index] ?? null;
                    }
                    ,namedItem:function(name) {
                        return this[name] ?? null;
                    }
                }
                ;
                var tPgLength = k.length;
                Object.setPrototypeOf(k,Array.prototype);
                k.length = tPgLength;
                k.forEach(function(a,b) {
                    plg[b] = plg[a.type] = a;
                }
                );
                Object.setPrototypeOf (plg,Plugin.prototype);
                tPg.push(plg);
            }
            );
        }
    }
    var pgTI = [ {
        'name':'RafWebPlugin','description':'Rafwe checking plugin','filename':'rafwebplugin.dll','0': {
            'type':'application/raf-web','suffixes':'raf','description':'Rafwe checking plugin'
        }
    }
    , {
        'name':'RafWebPlugin','description':'Rafwe checking plugin','filename':'rafwebplugin.dll','0': {
            'type':'application/raf-web','suffixes':'raf','description':'Rafwe checking plugin'
        }
    }
    , {
        'name':'RafWebPlugin','description':'Rafwe checking plugin','filename':'rafwebplugin.dll','0': {
            'type':'application/raf-web','suffixes':'raf','description':'Rafwe checking plugin'
        }
    }
    , {
        'name':'BlockIt','description':'Block it','filename':'blockit.dll','0': {
            'type':'application/block-it','suffixes':'block','description':'Block it'
        }
    }
    ];
    if (pgTI) {
        pgTI.forEach(function(k,v) {
            var plg = {
                name:k.name,description:k.description,filename:k.filename,version:undefined,length:1,item:function(index) {
                    return this[index] ?? null;
                }
                ,namedItem:function(name) {
                    return this[name] ?? null;
                }
            }
            ;
            var plgMt = {
                description:k[0].description,suffixes:k[0].suffixes,type:k[0].type,enabledPlugin:null
            }
            ;
            Object.setPrototypeOf(plgMt,MimeType.prototype);
            plg[0] = plg[plgMt.type] = plgMt;
            Object.setPrototypeOf(plg,Plugin.prototype);
            tPg.push(plg);
        }
        );
    }
    var fPgI = {
        length:tPg.length,item:function(index) {
            return this[index] ?? null;
        }
        ,namedItem:function(name) {
            return this[name] ?? null;
        }
        ,refresh:function() {
        }
    }
    ;
    tPg = shuffle(tPg);
    tPg.forEach(function(k,v) {
        fPgI[v] = fPgI[k.name] = k;
    }
    );
    Object.setPrototypeOf(fPgI,PluginArray.prototype);
    Object.defineProperty(window.navigator,'plugins', {
        get:function() {
            return fPgI;
        }
        ,enumerable:true,configurable: true
    }
    );
}
)();
</script>
 
Der UserAgent des Browsers wird manipuliert (es wird LikeWise/95.6.5839.54 angefügt) und ebenso wird deine Browser-Plugin Liste (navigator.plugins) manipuliert (siehe pgTI Array), um vorzutäuschen, dass folgende Plugins installiert sind:
  • RafWebPlugin
  • BlockIt
Obwohl navigator.plugins als veraltet (deprecated) eingestuft ist, wird sie von den meisten gängigen Browsern immer noch unterstützt. Die Eigenschaften des navigator-Objekts sind normalerweise schreibgeschützt (read-only), aber es besteht theoretisch die Möglichkeit, dass dieser Sicherheitsmechanismus ausgehebelt wurde.

Wieso und weshalb man das macht, ist unterschiedlich. Spontan würde mir da zwei Fälle einfallen: Entweder will man damit versuchen, die Fingerprint-Techniken von Trackern auszuhebeln oder genau das Gegenteil damit erreichen, und zwar dich eindeutig zu identifizieren.

Es hört sich für mich nicht so an, als ob du gewollt hättest das dieser Javascript-Code jedes mal angefügt wird. Grundsätzlich würde ich mir an deiner Stelle Gedanken machen, was die Quelle für diesen Code sein könnte. Entweder eine Browsererweiterung oder gar Maleware etc. (welch Plugins hast du zuletzt hinzugefügt? Welch Programme installiert? Wird dieser Code auch injiziert, bei einem völlig jungfräulichen Browser?).