Unfortunately this is a bit non-trivial.
You may need to use the FTPClient class as only it will give you the flexibility you need.
I haven't compiled the code below, but it is basically what you might need:
FTPClient ftp = new FTPClient();
ftp.RemoteHost = "firewallhostname";
ftp.User("RemoteID@RemoteHost FireID");
string[] validCodes = {"230", "202", "332"};
ftp.Quote("PASS remotePassword", validCodes);
if (ftp.LastValidReply.ReplyCode == "332")
{
string[] validCodes = {"230", "202"};
ftp.Quote("ACCT firewallpasswd", validCodes);
}