Saturday, November 8, 2008

Este plauzibil?

Este plauzibil?
Citeam aici un articol despre un troian care desi este cunoscut deja de trei ani, a reusit pana in momentul de fata compromiterea a aproximativ jumatate de milion de portofele electronice.

Nu ma putut sa nu fiu uimita cum dupa tot acest timp, ideea inca functioneaza.

Din punct de vedere tehnic, secretul acestui troian pare sa fie asa numitul Obfuscated Code :



// Gur ceboyrz vf gung WninFpevcg 1.0
// qbrf abg cebivqr n Pune gb Ahzrevp inyhr pbairefvba
// Guhf jr qrsvar n znc.
// Orpnhfr gurer ner 64X HavPbqr punenpgref, guvf znc qbrf abg pbire nyy punenpgref.
shapgvba ebg13vavg()
{
ine znc = arj Neenl();
ine f = "nopqrstuvwxyzabcdefghijklm";

sbe (v=0; v
znc[f.puneNg(v)] = f.puneNg((v+13)%26);
sbe (v=0; v
znc[f.puneNg(v).gbHccrePnfr()] = f.puneNg((v+13)%26).gbHccrePnfr();
erghea znc;
}

shapgvba hcq()
{
vs (qbphzrag.sbezf[0].grkg.inyhr==ynfg)erghea;

ynfg = qbphzrag.sbezf[0].grkg.inyhr;
qbphzrag.sbezf[0].ebg13.inyhr = ebg13(ynfg);
}
//



Autorul sustine ca tehnica deruteaza cu succes filtre web si softuri antivirus.

Cautand mai multe despre subiect, am gasit aici un HTML scrambler efectiv. Bineinteles ca exista de-scramblere, asa cum astazi oricine poate descarca gratuit un decompilator in doar cateva minute, dar nu stiu cum se face ca astfel de tooluri sunt folosite cu cel mai mare succes tot de atacatori.


Am inteles, exista tooluri, exista dezvoltatori de calitate si de partea atacatorilor si de partea securitatii. Dar cred ca lupta asta nu va ajunge niciodata la un final pana cand nu va fi constientizata cu adevarat de masa utilizatorilor de soft.

In schimb, m-a frapat felul cum a pus problema unul dintre utilizatorii care au comentat articolul:

So do NOT try to solve this problem by matching "bad" patterns.

Match known good patterns and quarantine everything else.


Este plauzibil?

1 comment:

Vladimir Ghetau said...

// The problem is that JavaScript 1.0
// does not provide a Char to Numeric value conversion
// Thus we define a map.
// Because there are 64K UniCode characters, this map does not cover all characters.
function rot13init()
{
var map = new Array();
var s = "abcdefghijklmnopqrstuvwxyz";

for (i=0; i
map[s.charAt(i)] = s.charAt((i+13)%26);
for (i=0; i
map[s.charAt(i).toUpperCase()] = s.charAt((i+13)%26).toUpperCase();
return map;
}

function upd()
{
if (document.forms[0].text.value==last)return;

last = document.forms[0].text.value;
document.forms[0].rot13.value = rot13(last);
}
//