I've restored both pftpx and sshd services on my system. I did so by downloading the following files from the "Diagnostics: Command" web page on a known working system (and just for good measure, I picked one with an identical firmware build date of the embedded 1.2-RELEASE):
/etc/passwd
/etc/master.passwd
/etc/pwd.db
/etc/spwd.db
I uploaded those files on the broken system via the same page, "Diagnostics:Command". That put them all into /tmp so I executed the following four commands to move them into /etc:
cp /tmp/passwd /etc/passwd
cp /tmp/master.passwd /etc/master.passwd
cp /tmp/pwd.db /etc/pwd.db
cp /tmp/spwd.db /etc/spwd.db
Then rebooted, and the pftpx, sshd, and port forwarding services all came up as expected.
I also satisified my curiosity about the mysterious inetd services on ports 19000+ It looks like the port forwarding is handled by netcat….
fw:/etc# cat /var/etc/inetd.conf
19000 stream tcp nowait/0 nobody /usr/bin/nc nc -w 20 192.169.1.3 25
19001 stream tcp nowait/0 nobody /usr/bin/nc nc -w 20 192.169.1.3 80
19002 stream tcp nowait/0 nobody /usr/bin/nc nc -w 20 192.169.1.3 110
19003 stream tcp nowait/0 nobody /usr/bin/nc nc -w 20 192.169.1.3 8383
19004 stream tcp nowait/0 nobody /usr/bin/nc nc -w 20 192.169.1.4 80
19005 stream tcp nowait/0 nobody /usr/bin/nc nc -w 20 192.169.1.5 80
19006 stream tcp nowait/0 nobody /usr/bin/nc nc -w 20 192.169.1.7 25
19007 stream tcp nowait/0 nobody /usr/bin/nc nc -w 20 192.169.1.7 80
19008 stream tcp nowait/0 nobody /usr/bin/nc nc -w 20 192.169.1.7 110
19009 stream tcp nowait/0 nobody /usr/bin/nc nc -w 20 192.169.1.7 443
19010 stream tcp nowait/0 nobody /usr/bin/nc nc -w 20 192.169.1.21 80
fw:/etc#
Also verified that from an untrusted host on the WAN, the only open ports are the two proxies I expect to see:
(The 65533 ports scanned but not shown below are in state: filtered)
PORT STATE SERVICE
21/tcp open ftp
1723/tcp open pptp
Nmap run completed -- 1 IP address (1 host up) scanned in 180.733 seconds
So, if there was a remote compromise it would have likely been via one of those services.
My process for finding different files was mainly to run md5 /etc/* via the web command line, and then diff'd the results against a known good system.