Excellent analysis of the ICQ trojans


Contents:
---------
o Summary - a summary of the trojan
o Removal - how to remove the trojan
o Threat Analysis - the possible dangers
o Prevention - how to keep this from happening
o File Information - information on the .EXE file
o Unit Information - information on what 3rd party packages it uses
o Form 1 - information on the first window found in the application
o Form 2 - information on the second window found in the application
o Thoughts - conjecture of mine


Summary:
--------

The exe (ickill.exe, 98s.exe, icqhijaak.exe) was made with Borland Delphi, either version 2 or 3, as it is a 32-bit application. When executed, it copies itself to the Windows directory, and creates registry entries to make it start up when Windows starts. Once opened, it sets up a server on port 5000 or 7789, which allows certain persons to download, upload, delete, and create files, and perhaps to even take screenshots.

Removal:
--------

1.) Ctrl+Alt+Del and end any task named "mschv32.exe" or any second explorer orany task named "1.exe"
2.) Delete *any* instance of MSCHV32.EXE or 1.EXE
3.) If there is an EXPLORER.EXE in your WINDOWS\SYSTEM directory, delete it
4.) Open WINDOWS\REGEDIT.EXE and use Edit | Find to find and delete anyreferences to 1.EXE or MSCHV.EXE

Threat Analysis:
----------------

Backdoor-style trojans such as these pose a serious threat to the average user. Most people are used to having installation programs crap out on them, and so when a program gives them an error message and "quits," they delete the EXE and move on. If the user has any sensitive information on their computer, they will indubitably wish to keep it private.


Prevention:
-----------

One way to prevent such a trojan being installed unwittingly on your machine is to change the way you install programs. InControl 3, available at http://www.zdnet.com/pcmag/pctech/content/15/13/ut1513.001.htmlis a utility which tracks the changes to a system a program makes. Use it whenever you're installing a program, regardless of the program's pedigree. You can look at the log later to see what registry keys have been added, what INI files have been changed, what directories and files have been changed, added, or deleted. This kind of trojan is too new to be detected with a virus scanner, and trojans are simple to make. The best defense in this case is good program hygiene.


File Information:
-----------------

Filename: ICKILL.EXE, 98S.EXE, ICQHIJAAK.EXE
File Size: 335,872 bytes
MD5 Message Digest: 711DFB9A0F23058CB238302EB2D46C35


Unit Information:
-----------------


The units used are this:

À # =Cheval óFileCtrl ÇConsts ÇSystem SysInit  Dialogs ‘ExtCtrls
3Messages KWindows SysUtils ^Classes QTypInfo sActiveX &Controls ³Forms
°Printers WWinSpool +Graphics vMenus ÁImm Commctrl dStdCtrls IDlgs
3CommDlg ÂButtons :Scrute ¡Spin !WSocket ±WSockbuf £Wait ©WinSock *ShellAPI
8Registry øUnit2 îunit1

All units here are standard Delphi units except for Scrute, WSocket, WSockbuf, Wait, Unit2, and unit1. Scrute is an unknown unit, whose name, in French, means "scan". WSocket, WSockbuf, and Wait are all units for a common winsock Delphi component, TWSocket. Unit2 and unit1 are the two forms used by the project.


Form 1:
-------

The property list for the first form looks like this:

object Form1: TForm1
Left = 370
Top = 198
BorderIcons = [biSystemMenu]
BorderStyle = bsDialog
Caption = 'Form1'
ClientHeight = 115
ClientWidth = 436
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
Position = poScreenCenter
OnClose = FormClose
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object ChatPort: TEdit
Left = 10
Top = 41
Width = 31
Height = 21
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentFont = False
TabOrder = 0
Text = '5000'
Visible = False
end
object DelaiDistant: TSpinEdit
Left = 45
Top = 41
Width = 41
Height = 22
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
MaxValue = 500
MinValue = 0
ParentFont = False
TabOrder = 1
Value = 0
Visible = False
end
object SrvSocket: TWSocket
Proto = 'tcp'
MultiThreaded = False
OnSessionAvailable = SrvSocketSessionAvailable
FlushTimeout = 60
SendFlags = wsSendNormal
Left = 5
Top = 4
end
object CliSocket: TWSocket
Proto = 'tcp'
MultiThreaded = False
OnDataAvailable = CliSocketDataAvailable
OnSessionClosed = CliSocketSessionClosed
FlushTimeout = 60
SendFlags = wsSendNormal
Left = 37
Top = 5
end
end

We can see it is a form, default size, screen center, with an edit box (named ChatPort, default text = '5000'), and a spin box (named DelaiDistant, default value = 500). It has two TWSockets, one a server (apparently), the other a client. The server has some event for when someone tries to connect to it. What that does is unknown. The client has event handlers for when someonesends the client data, and for when the client is disconnected. Again, what it does is unknown.

Form 2:
-------


The property list for the second form:

object Form_HD: TForm_HD
Left = 415
Top = 189
Width = 138
Height = 87
BorderIcons = [biSystemMenu, biMaximize]
Caption = 'Form_HD'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
Position = poScreenCenter
PixelsPerInch = 96
TextHeight = 13
object DriveComboBox: TDriveComboBox
Left = 20
Top = 38
Width = 89
Height = 19
TabOrder = 0
Visible = False
end
object Scrute: TScruteDossier
Dossier = 'c:\'
Filtre = '*.*'
SousDossier = False
OnFichier = ScruteFichier
OnDossier = ScruteDossier
OnFinExecute = ScruteFinExecute
MaxPenetration = 10000
Left = 70
Top = 4
end
object FileCliSocket: TWSocket
Proto = 'tcp'
MultiThreaded = False
OnDataAvailable = FileCliSocketDataAvailable
OnSessionConnected = FileCliSocketSessionConnected
FlushTimeout = 60
SendFlags = wsSendNormal
Left = 31
Top = 3
end
end

This is the engine of the program. The form is non-default size (87x138). It has an unknown component, TScruteDossier, which presumably scans the directory tree, returning file names, paths, attributes, etc. "Scrute Dossier" in French means "scan file." It also has a drive combo box, which is simply a combo box with a list of all drives on the machine. It has a TWSocket client, which has event handlers for when the client receives data, and when the client connects to a server.


Thoughts:
---------
(None of these are supported by fact, so don't mistake them for the truth,
they are *my* opinions only):

I think this program was created by someone relatively new to Delphi
programming.

Why:
* The author uses Delphi components to do things like scan the directory tree, check for all the drives on a machine, when code for this is readily available in easier-to-use code snippits. * Naming conventions: this program doesn't follow any Delphi naming conventions. Most professional or intermediate Delphi programmers follow some sort of naming convention, either Hungarian notation, or their own personal conventions.
* The number of forms, etc. If this was a good programmer, they could have made it much smaller, and much more obtrusive.

I'm told this program is called "Master's Paradise" and that it's made by someone/some group/some place/somewhatever called the Munich Brain House. Searches on the internet have turned up squat, save for some pages about vibrators. No idea why. But apparently, every woman needs a "Deep Stroker." I should put that on my business card.

Anyways, if you have any more information about this trojan, where it came from, who made it, etc, please mail me at messiah@jps.net. Thanks.

Credits


The Holy Bible © 1997-1998 Self-Induced Negativity
ICKill Trojan Analysis
By: The Messiah
Released: July 3, 1998
http://www.sinnerz.com