首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何识别网络钓鱼页面中的编码内容

如何识别网络钓鱼页面中的编码内容
EN

Security用户
提问于 2016-05-17 11:58:42
回答 1查看 1.2K关注 0票数 2

首先,我在信息安全方面完全是个傻瓜。今天早上我收到了一封让我好奇的电子邮件。这是一种钓鱼页面,Gmail的垃圾邮件过滤器没有检测到。所以我下载了内容来查看它的代码。我发现的是简单的HTML/JavaScript页面,页脚上有这样的内容:

代码语言:javascript
复制
function XF(){return new Array('0cd0a85cd81679c246c5a0bb377e5f3b789d0612531b507f4a9dd98ba372219feb0d35d42db5970a21c95428a46ddb18bd664c405e1dd9074f6e0ffdda0cd7f9365337e1baca81c9d73803789c0192093adef61debca1f9525309693700fe45464d57327a2fb449f05b4c0736a71bcf1ffcc66a09e439358cf0d1abf9763f1548ac13a8aed69a52e8a3f15d0d5294f41877d4b5408e95c1286f390bb1bf19c6581b3c17075ebf4733b7224bf275cc8911fc15b359bd195d4f2220ad2ca3991f096f22e32d0ae0a749d921f7bb331a7a07fa31e98f2ea6edf4c996bf82e2eea6664033f1e890023d1bb2fc8b3dbf9ca70bfb9b9063f583d2927f2eeb82c08d130e7c04c2ea8a388750694fbef8a3257944f838446cbfbdd827275e20938288fcb5876608d8d444931c5b03c441e6086aee1111ed0a8366a64e75c38afddf4a6bf70f3583ca7bdf5402f281e62405899c38bcdf51c497cdfdc5951850f5a53d0d0fa7373fa458df3f63ebfff78a2b2a159ad48e1575f55f2adf8a3fc3202dfd15a7c1efe0efec1ceaa69406b3db509bbe596d3ee97e2c365ba7f48fd01ad3035beba46ae443aee287739033c9c9fcf8ec0daf8247931d667a6ab8d8c60cbe627f4b37a5a6ee7bf5de687cdb15c3b6778e6b9af28af9b2306c3f93ffd5588347e293fc61a75263317e3ef10e59f7798a936625d98dae2904186de3aefa1e877af65', ...}

更新1:以下是PasteBin中的全部代码

为了最小化代码,我刚刚通过了数组的第一个元素。我可以猜到这是一个十六进制数组,但我想知道如何解码它的内容,看看它在做什么。

任何帮助都将不胜感激。

更新2:我能够将部分代码转换回字符串,我意识到它实际上是一个被占用的脚本。检查:https://jsfiddle.net/g9hsaj3o/

EN

回答 1

Security用户

回答已采纳

发布于 2016-05-17 13:25:33

只是一些小事情,还没有完全弄清楚。请随时对此进行扩展和评论。

在我们美化代码之后,我们得到:http://pastebin.com/CdZ5BTfj

我们看到:

代码语言:javascript
复制
var C4 = new Array(0x3c, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74...

然后是一个函数

代码语言:javascript
复制
function DC() {
    var Wb = C4.length,
        _yu = new Array(Wb),
        i;
    for (i = 0; i < Wb; i++) _yu[i] = String.fromCharCode(C4[i]);
    document.open();
    document.clear();
    document.write(_yu.join(""));
    document.close();
};

因此,这只是执行HEX -> ASCII转换,并将解码后的字符串写入文档。这反过来又评估为

代码语言:javascript
复制
<script>
    function _ii(Cc) {
        var Dc, yx, _099, _ln, o, _x02, _jh;
        Dc = new Array(4);
        _jh = XF();
        _ln = _jh.length;
        yx = _r0(Cc, _s88n(_jh[_ln - (0x4c ^ 0x4e)]), 0x03e8);
        _099 = ZZ(_xsii(_jh[_ln - (0x2b ^ 0x2f)]), yx);
        _x02 = ZZ(_xsii(_jh[_ln - (0x98 ^ 0x9B)]), yx);
        o = JJ(_jh, _099, _x02, Dc);
        if ((Dc.join("")) == _jh[_ln - 1]) {
            document.write(o.join(""));
            document.close();
        } else {
            msg.innerHTML = " ";
            alert('Senha inválida!');
        };
        _ip = false;
    };
</script>

这是它变得有趣的地方,因为其他混淆的函数被调用。这是使用"XF()“返回的神奇数组的地方:

代码语言:javascript
复制
function XF() {
    return new Array('0cd0a85cd816....6ec24dde78ca48', 'd6860accfa237d675ba73acc5e486168', 'f81845c6e66b62e5fc758da50dc73d68', 'a96751384baa020ef306acaed4e7851683989674', 'eb3494af236b53ec970b830e308ff41d');
};

因为我们只需要获取再次写入document中的解密字符串,所以我们可以轻松地修改代码以输出字符串。

但是,为此,我们需要_ii()中使用的"cc“对象。我们看到有一个函数调用_ii()

代码语言:javascript
复制
function A0(Cc) {
    if (!_ip) {
        msg.innerHTML = ms2;
        window.setTimeout(function() {
            _ii(Cc);
        }, 0);
        _ip = true;
    };
};

但是,谁来代替A0,用什么论据呢?我们查看HTML并看到

代码语言:javascript
复制
<form name="F1" onsubmit="A0(document.F1.P1.value)" action="javascript:A0(document.F1.P1.value)">

而且还

代码语言:javascript
复制
<a href="javascript: A0(document.F1.P1.value);">

因此,我们需要表单F1和子对象P1的值。

然而,我现在还没有找到正确的理由。也许是个硬编码的值。当我使用参数"abc"执行函数的修改版本,从而输出写入文档的字符串时,我现在只收到垃圾。

如果我们找出正确的参数,这可能会正确地解密到一个新的恶意软件。到目前为止,我看到的代码只是散列(MD5或SHA1)和加密之类的东西。真正的恶意软件必须在XF()函数的数组中。

(修改职能:)

代码语言:javascript
复制
function _ii(Cc) {
    console.log("inside");
    var Dc, yx, _099, _ln, o, _x02, _jh;
    Dc = new Array(4);
    console.log("good");
    _jh = XF();
    console.log("outside");

    _ln = _jh.length;
    console.log("good");
    yx = _r0(Cc, _s88n(_jh[_ln - (0x4c ^ 0x4e)]), 0x03e8);
    _099 = ZZ(_xsii(_jh[_ln - (0x2b ^ 0x2f)]), yx);
    _x02 = ZZ(_xsii(_jh[_ln - (0x98 ^ 0x9B)]), yx);
    o = JJ(_jh, _099, _x02, Dc);
    console.log(o.join(""));
    /*if ((Dc.join("")) == _jh[_ln - 1]) {
        document.write(o.join(""));
        document.close();
    } else {
        msg.innerHTML = " ";
        alert('Senha inválida!');
    };*/
    _ip = false;
};

表单是安全的打开,没有任何链接图片存在。我们有以下一页:

留在文本框中的文本似乎是“请输入您的密码”。因此,这似乎是我们真的必须知道密码,以解密文本。但密码是什么?我以为这是个骗局?直到知道,密码似乎没有被发送到某个第三方服务器。只有正确的密码才能解密其他东西(或者我没能解密密码,它做了其他事情)

票数 4
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/123519

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档