How does NoScript handle this?

General discussion about the NoScript extension for Firefox
Post Reply
luntrus
Senior Member
Posts: 237
Joined: Sat Mar 21, 2009 6:29 pm

How does NoScript handle this?

Post by luntrus » Sat Mar 28, 2009 6:43 pm

Hi Giorgio Maone,

I went over here, and tried this out:
http://fantomaster.com/fantomasSuite/sh ... ersv-e.cgi
First I found up this code somewhere:

Code: Select all

<html>
<head>
<title>Expandible row test in firefox</title>
<STYLE type="text/css">
.collapsed
{
DISPLAY: none;
}
</STYLE>
<script language="javascript" type="text/javascript">
//***collapsible rows
function outliner(evt) {
evt = (evt) ? evt : (window.event) ? window.event : "";
var oMe;
if (evt.srcElement) {
oMe = evt.srcElement;
} else if (evt.target) {
oMe = evt.target;
}
if (evt.srcElement) {
//for IE
var child = document.all[oMe.getAttribute("child",false)];
}
else {
//for Firefox
var child = document.getElementById[oMe.getAttribute("child",false)];
}
//get child element
//if child element exists, expand or collapse it.
if (null != child)
child.className = child.className == "collapsed" ? "expanded" : "collapsed";
}
function changepic(evt) {
evt = (evt) ? evt : (window.event) ? window.event : "";
var uMe;
if (evt.srcElement) {
uMe = evt.srcElement;
} else if (evt.target) {
uMe = evt.target;
}
var check = uMe.src.toLowerCase();
if (check.lastIndexOf("expand.gif") != -1)
{
uMe.src = "collapse.gif";
}
else
{
uMe.src = "expand.gif";
}
}
</script>
</head>
<body onclick="outliner(event)">
<table cellpadding="2" cellspacing="0" width="98%" class="infotable" bgcolor="#f4f4f4">
<caption class="issuetitle">NARMC Sleep Disorders Clinic Intake Form</caption>
<thead >
<tr>
<th class="header" width="1%" />
<td class="header"> Last Name:</td>
<td class="header"> First Name:</td>
<td class="header"> Gender:</td>
</tr>
</thead>

<tr>
<td class="content"><A HREF="javascript:" onClick="document.getElementById['srcidDBData115847296']"><IMG border="0" alt="expand/collapse" class="expandable" height="11" onclick="changepic(event)" src="expand.gif" width="9" child="srcidDBData115847296" ></A></td>
<td class="content">Caloris</td>
<td class="content">Morris</td>
<td class="content">M</td>
</tr>

<tr class="collapsed" bgcolor="#ffffff" id="srcidDBData115847296">
<td colspan="4"> Test
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>

then encoded it to this

Code: Select all

<html>
<head>
<title>&#069;&#120;&#112;&#097;&#110;&#100;&#105;&#098;&#108;&#101;&#032;&#114;&#111;&#119;&#032;&#116;&#101;&#115;&#116;&#032;&#105;&#110;&#032;&#102;&#105;&#114;&#101;&#102;&#111;&#120;</title>
<STYLE type="text/css">
.&#099;&#111;&#108;&#108;&#097;&#112;&#115;&#101;&#100;
{
&#068;&#073;&#083;&#080;&#076;&#065;&#089;&#058;&#032;&#110;&#111;&#110;&#101;&#059;
}
</STYLE>
<script language="javascript" type="text/javascript">
//***&#099;&#111;&#108;&#108;&#097;&#112;&#115;&#105;&#098;&#108;&#101;&#032;&#114;&#111;&#119;&#115;
&#102;&#117;&#110;&#099;&#116;&#105;&#111;&#110;&#032;&#111;&#117;&#116;&#108;&#105;&#110;&#101;&#114;(&#101;&#118;&#116;)&#032;{
&#101;&#118;&#116;&#032;=&#032;(&#101;&#118;&#116;)&#032;?&#032;&#101;&#118;&#116;&#032;&#058;&#032;(&#119;&#105;&#110;&#100;&#111;&#119;.&#101;&#118;&#101;&#110;&#116;)&#032;?&#032;&#119;&#105;&#110;&#100;&#111;&#119;.&#101;&#118;&#101;&#110;&#116;&#032;&#058;&#032;""&#059;
&#118;&#097;&#114;&#032;&#111;&#077;&#101;&#059;
&#105;&#102;&#032;(&#101;&#118;&#116;.&#115;&#114;&#099;&#069;&#108;&#101;&#109;&#101;&#110;&#116;)&#032;{
&#111;&#077;&#101;&#032;=&#032;&#101;&#118;&#116;.&#115;&#114;&#099;&#069;&#108;&#101;&#109;&#101;&#110;&#116;&#059;
}&#032;&#101;&#108;&#115;&#101;&#032;&#105;&#102;&#032;(&#101;&#118;&#116;.&#116;&#097;&#114;&#103;&#101;&#116;)&#032;{
&#111;&#077;&#101;&#032;=&#032;&#101;&#118;&#116;.&#116;&#097;&#114;&#103;&#101;&#116;&#059;
}
&#105;&#102;&#032;(&#101;&#118;&#116;.&#115;&#114;&#099;&#069;&#108;&#101;&#109;&#101;&#110;&#116;)&#032;{
//&#102;&#111;&#114;&#032;&#073;&#069;
&#118;&#097;&#114;&#032;&#099;&#104;&#105;&#108;&#100;&#032;=&#032;&#100;&#111;&#099;&#117;&#109;&#101;&#110;&#116;.&#097;&#108;&#108;[&#111;&#077;&#101;.&#103;&#101;&#116;&#065;&#116;&#116;&#114;&#105;&#098;&#117;&#116;&#101;("&#099;&#104;&#105;&#108;&#100;",&#102;&#097;&#108;&#115;&#101;)]&#059;
}
&#101;&#108;&#115;&#101;&#032;{
//&#102;&#111;&#114;&#032;&#070;&#105;&#114;&#101;&#102;&#111;&#120;
&#118;&#097;&#114;&#032;&#099;&#104;&#105;&#108;&#100;&#032;=&#032;&#100;&#111;&#099;&#117;&#109;&#101;&#110;&#116;.&#103;&#101;&#116;&#069;&#108;&#101;&#109;&#101;&#110;&#116;&#066;&#121;&#073;&#100;[&#111;&#077;&#101;.&#103;&#101;&#116;&#065;&#116;&#116;&#114;&#105;&#098;&#117;&#116;&#101;("&#099;&#104;&#105;&#108;&#100;",&#102;&#097;&#108;&#115;&#101;)]&#059;
}
//&#103;&#101;&#116;&#032;&#099;&#104;&#105;&#108;&#100;&#032;&#101;&#108;&#101;&#109;&#101;&#110;&#116;
//&#105;&#102;&#032;&#099;&#104;&#105;&#108;&#100;&#032;&#101;&#108;&#101;&#109;&#101;&#110;&#116;&#032;&#101;&#120;&#105;&#115;&#116;&#115;,&#032;&#101;&#120;&#112;&#097;&#110;&#100;&#032;&#111;&#114;&#032;&#099;&#111;&#108;&#108;&#097;&#112;&#115;&#101;&#032;&#105;&#116;.
&#105;&#102;&#032;(&#110;&#117;&#108;&#108;&#032;!=&#032;&#099;&#104;&#105;&#108;&#100;)
&#099;&#104;&#105;&#108;&#100;.&#099;&#108;&#097;&#115;&#115;&#078;&#097;&#109;&#101;&#032;=&#032;&#099;&#104;&#105;&#108;&#100;.&#099;&#108;&#097;&#115;&#115;&#078;&#097;&#109;&#101;&#032;==&#032;"&#099;&#111;&#108;&#108;&#097;&#112;&#115;&#101;&#100;"&#032;?&#032;"&#101;&#120;&#112;&#097;&#110;&#100;&#101;&#100;"&#032;&#058;&#032;"&#099;&#111;&#108;&#108;&#097;&#112;&#115;&#101;&#100;"&#059;
}
&#102;&#117;&#110;&#099;&#116;&#105;&#111;&#110;&#032;&#099;&#104;&#097;&#110;&#103;&#101;&#112;&#105;&#099;(&#101;&#118;&#116;)&#032;{
&#101;&#118;&#116;&#032;=&#032;(&#101;&#118;&#116;)&#032;?&#032;&#101;&#118;&#116;&#032;&#058;&#032;(&#119;&#105;&#110;&#100;&#111;&#119;.&#101;&#118;&#101;&#110;&#116;)&#032;?&#032;&#119;&#105;&#110;&#100;&#111;&#119;.&#101;&#118;&#101;&#110;&#116;&#032;&#058;&#032;""&#059;
&#118;&#097;&#114;&#032;&#117;&#077;&#101;&#059;
&#105;&#102;&#032;(&#101;&#118;&#116;.&#115;&#114;&#099;&#069;&#108;&#101;&#109;&#101;&#110;&#116;)&#032;{
&#117;&#077;&#101;&#032;=&#032;&#101;&#118;&#116;.&#115;&#114;&#099;&#069;&#108;&#101;&#109;&#101;&#110;&#116;&#059;
}&#032;&#101;&#108;&#115;&#101;&#032;&#105;&#102;&#032;(&#101;&#118;&#116;.&#116;&#097;&#114;&#103;&#101;&#116;)&#032;{
&#117;&#077;&#101;&#032;=&#032;&#101;&#118;&#116;.&#116;&#097;&#114;&#103;&#101;&#116;&#059;
}
&#118;&#097;&#114;&#032;&#099;&#104;&#101;&#099;&#107;&#032;=&#032;&#117;&#077;&#101;.&#115;&#114;&#099;.&#116;&#111;&#076;&#111;&#119;&#101;&#114;&#067;&#097;&#115;&#101;()&#059;
&#105;&#102;&#032;(&#099;&#104;&#101;&#099;&#107;.&#108;&#097;&#115;&#116;&#073;&#110;&#100;&#101;&#120;&#079;&#102;("&#101;&#120;&#112;&#097;&#110;&#100;.&#103;&#105;&#102;")&#032;!=&#032;-&#049;)
{
&#117;&#077;&#101;.&#115;&#114;&#099;&#032;=&#032;"&#099;&#111;&#108;&#108;&#097;&#112;&#115;&#101;.&#103;&#105;&#102;"&#059;
}
&#101;&#108;&#115;&#101;
{
&#117;&#077;&#101;.&#115;&#114;&#099;&#032;=&#032;"&#101;&#120;&#112;&#097;&#110;&#100;.&#103;&#105;&#102;"&#059;
}
}
</script>
</head>
<body onclick="outliner(event)">
<table cellpadding="2" cellspacing="0" width="98%" class="infotable" bgcolor="#f4f4f4">
<caption class="issuetitle">&#078;&#065;&#082;&#077;&#067;&#032;&#083;&#108;&#101;&#101;&#112;&#032;&#068;&#105;&#115;&#111;&#114;&#100;&#101;&#114;&#115;&#032;&#067;&#108;&#105;&#110;&#105;&#099;&#032;&#073;&#110;&#116;&#097;&#107;&#101;&#032;&#070;&#111;&#114;&#109;</caption>
<thead >
<tr>
<th class="header" width="1%" />
<td class="header">&#032;&#076;&#097;&#115;&#116;&#032;&#078;&#097;&#109;&#101;&#058;</td>
<td class="header">&#032;&#070;&#105;&#114;&#115;&#116;&#032;&#078;&#097;&#109;&#101;&#058;</td>
<td class="header">&#032;&#071;&#101;&#110;&#100;&#101;&#114;&#058;</td>
</tr>
</thead>

<tr>
<td class="content"><A HREF="javascript:" onClick="document.getElementById['srcidDBData115847296']"><IMG border="0" alt="expand/collapse" class="expandable" height="11" onclick="changepic(event)" src="expand.gif" width="9" child="srcidDBData115847296" ></A></td>
<td class="content">&#067;&#097;&#108;&#111;&#114;&#105;&#115;</td>
<td class="content">&#077;&#111;&#114;&#114;&#105;&#115;</td>
<td class="content">&#077;</td>
</tr>

<tr class="collapsed" bgcolor="#ffffff" id="srcidDBData115847296">
<td colspan="4">&#032;&#084;&#101;&#115;&#116;
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>

Question in NoScript the stealthed code is handled exactly similar to the "straight" variety? I guess so, but can you verify?

luntrus
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2a1pre) Gecko/20090327 Minefield/3.6a1pre

User avatar
therube
Ambassador
Posts: 7409
Joined: Thu Mar 19, 2009 4:17 pm
Location: Maryland USA

Re: How does NoScript handle this?

Post by therube » Sat Mar 28, 2009 9:37 pm

Unless it is making changes to the code (either purposely or due to an error in the coding of the encoder) then there should be no difference whatsoever. All the encoding does (should do) is to make it more difficult for you or I to garner the meaning of the code.

The browser shouldn't care what it looks like, so long as it knows how to use the information presented.

But now that we know, we can take that obscured code & convert it back to a more readable form, after which we still need to ask someone else what it means :lol: .

Though even with the browser understanding how to "read" the information presented, NoScript, which I guess you could consider as a filter, must also check specifically for all potential cases. If it did not, then the code would be transparent to NoScript.

And as we've seen over time, both Mozilla & NoScript had to be updated to patch "code" that was not, or not correctly, being interpreted.
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.19) Gecko/20110420 SeaMonkey/2.0.14 Pinball NoScript FlashGot AdblockPlus
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1b4pre) Gecko/20090327 SeaMonkey/2.0b1pre

User avatar
Giorgio Maone
Site Admin
Posts: 8697
Joined: Wed Mar 18, 2009 11:22 pm
Location: Palermo - Italy
Contact:

Re: How does NoScript handle this?

Post by Giorgio Maone » Sat Mar 28, 2009 9:59 pm

For Mozilla to run it, Mozilla must understand it first.
If Mozilla can understand it, NoScript can as well :)


However, that "ultimate stealth" is ridiculous -- just plain old HTML encoding.
There are several more convoluted ways to obfuscate code, but at the end of the day the bold proposition above applies.
Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8 (.NET CLR 3.5.30729)

User avatar
GµårÐïåñ
Lieutenant Colonel
Posts: 3339
Joined: Fri Mar 20, 2009 5:19 am
Location: PST - USA
Contact:

Re: How does NoScript handle this?

Post by GµårÐïåñ » Sun Mar 29, 2009 2:16 am

Giorgio Maone wrote:For Mozilla to run it, Mozilla must understand it first.
If Mozilla can understand it, NoScript can as well :)


However, that "ultimate stealth" is ridiculous -- just plain old HTML encoding.
There are several more convoluted ways to obfuscate code, but at the end of the day the bold proposition above applies.


Agreed, the attempt at "encoding" is pretty amateur. :|
~.:[ Lï£ê ï§ å Lêmðñ åñÐ Ì Wåñ† M¥ Mðñê¥ ßå¢k ]:.~
________________ .: [ Major Mike's ] :. ________________
Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8

Post Reply