LanSchool Keylogger Vulnerability

Henry Y, Aaron D, Thomas D

Update 2/2/2010

We finally had some time to work on this update. The new decryption tables are now in the uploader and are posted below. We now have two tables, one for 7.4.1.4 and one for older versions. Click the show table link above the table to change versions.

Update 1/15/2010

LanSchool released a patch in version 7.4.1.4 that changed the encryption slightly. So far, we have confirmed that they modified which values are mapped to which characters, but everything else seems to be the same. Thus, the table below is now incorrect for version 7.4.1.4, but the information should still be fine.

The network monitoring program LanSchool is often used to keep an eye on students, similar to other programs like Vision6 and SynchronEyes. It has features such as remote control (local user loses all control), task manager disabling, port 80 blocking, and keylogging. The keylogger, which stores its information on the computer from which the data is captured, is especially vulnerable to exploitation, as it may contain passwords and other sensitive data that people may have typed on the computer.

The LanSchool keylogger stores its data in a file called 'lskdata.bin' encrypted with a slightly modified substitution cipher. Every key can have one of four possible single byte values based on the byte's absolute position in the file, mod 4. For example, if the letter 'a' was encoded at position 739, its value would be 106, because this is the value for 'a' at position 3 (739 % 4 = 3). Clearly, by typing four consecutive characters of 'a' and reading the output, one would have enough information to consistently decode this letter. This technique was used to generate the table of character-value associations.

Reading in one of the files using these tables to automatically look up each character was very successful.

If one holds down the shift key and presses multiple letters, LanSchool seems to only record the first letter as capitalized. This may be a bug in their code, or it may suggest a lack of complete understanding of the system, but this means that capital letters typed in succession may not be read correctly (e.g., "ABCdEF" might be read as "AbcdEf").

Further, LanSchool only stores the last 50,000 key presses. The information would have to be gathered and merged periodically to maintain a full record. However, to quote the LanSchool website (lanschool.com) this is “weeks of keystrokes.”

Show Table for 7.4.1.3 and older
LanSchool Version 7.4.1.4
LetterPOS % 4
% = 0% = 1% = 2% = 3
a4199128103
b4296131100
c4397130101
d4410213398
e4510313299
f4610013596
g4710113497
h32106137110
i33107136111
j34104139108
k35105138109
l36110141106
m37111140107
n38108143104
o39109142105
p56114145118
q57115144119
r58112147116
s59113146117
t60118149114
u61119148115
v62116151112
w63117150113
x48122153126
y49123152127
z50120155124
01205020954
11215120855
21224821152
31234921053
41245421350
51255521251
61265221548
71275321449
81125821762
91135921663
(space)1043419338
[198918693
]219518891
\209418990
;1155721861
''1113719833
,1004620542
.1024420740
/1034520641
A96716071
B106416368
C116516269
D127016566
E137116467
F146816764
G156916665
H07416978
I17516879
J27217176
K37317077
L47817374
M57917275
N67617572
O77717473
P248217786
Q258317687
R268017984
S278117885
T288618182
U298718083
V308418380
W318518281
X169018594
Y179118495
Z188818792
!1053519239
@86616170
#1073319437
$1083819734
%1093919635
^229219188
&1103619932
*984020344
(964220146
)974320047
_239319089
+994120245
-1014720443
=1176322059
{51121154125
}53127156123
|52126157122
:1145621960
"1063219536
<1166222158
>1186022356
?1196122257