• [技术干货] 渗透安全:以攻促防,构筑数字堡垒
    在数字化浪潮席卷全球的今天,网络空间已成为继陆、海、空、天之后的“第五疆域”。随之而来的,是日益严峻的网络安全威胁。防火墙、入侵检测系统等静态防御手段如同中世纪城堡的城墙与护城河,虽必不可少,但已不足以应对 sophisticated(复杂)的攻击者。渗透安全(Penetration Testing)作为一种“以攻击者思维,行防御之实”的主动安全评估方式,正成为检验这座“数字城堡”坚固与否的关键试金石。渗透测试,俗称“白帽黑客”攻击,是在获得授权的前提下,模拟真实攻击者的技术和方法,对目标系统(如网站、服务器、网络设备等)进行安全攻击测试,旨在发现其中存在的安全漏洞、评估风险等级,并最终提供修复建议,从而帮助组织先于恶意攻击者发现并解决问题。渗透测试的核心价值在于其主动性与前瞻性。 它改变了传统安全“亡羊补牢”的被动模式,通过在攻击发生前主动寻找薄弱环节,将安全隐患扼杀在摇篮中,极大降低了数据泄露、服务中断、财产损失等安全事件发生的概率。代码实践案例:SQL注入漏洞的发现与利用为了让理论更具象,我们以一个最常见的Web漏洞——SQL注入(SQL Injection)为例,展示一个简化的渗透测试过程。场景: 一个网站的用户登录界面,后端使用SQL语句验证用户身份。1. 漏洞探测:正常用户输入用户名(admin)和密码(password123)。后端执行的SQL查询可能如下:sqlSELECT * FROM users WHERE username='admin' AND password='password123';渗透测试人员会尝试在用户名输入框中输入一些特殊的“测试载荷”(Payload),如:admin'--此时,后端拼接出的SQL语句变为:sqlSELECT * FROM users WHERE username='admin'--' AND password='xxx';在SQL中,-- 是注释符,这意味着其后的所有语句都会被忽略。因此,这条查询变成了:“寻找用户名为admin的用户,并且不再验证密码”。如果网站返回了管理员登录成功的页面,则证明存在SQL注入漏洞。2. 自动化工具辅助(以Python为例):手动测试效率较低,在实际渗透中,测试人员常编写脚本进行自动化探测。pythonimport requests# 目标登录URLtarget_url = "http://example.com/login"# 构建一个简单的Payload列表payloads = ["admin'--", "admin'#", "' OR '1'='1'--", "' OR 1=1--"]for payload in payloads: # 构造POST请求的数据 data = {'username': payload, 'password': 'any_password'} # 发送POST请求 response = requests.post(target_url, data=data) # 检查响应中是否包含登录成功的特征(例如:'Welcome' 或 跳转到dashboard页面) if "Welcome" in response.text or "dashboard" in response.text: print(f"[!] 发现SQL注入漏洞!有效Payload: {payload}") print(f"[!] 响应长度: {len(response.text)}") break else: print(f"[-] Payload '{payload}' 无效。")3. 漏洞利用与深度验证:确认漏洞后,测试人员可能会使用更强大的工具(如SQLmap)进行深度利用,尝试获取数据库名称、表结构乃至敏感数据(如用户密码哈希值),以充分证明漏洞的危害性。4. 报告与修复:测试的最后一步是撰写报告。对于这个漏洞,修复建议非常明确:根本原因: 将用户输入直接拼接至SQL语句,未进行任何过滤或转义。修复方案: 使用参数化查询(预编译语句),这是根治SQL注入的银弹。以下是一个Python中使用PyMySQL库的示例:pythonimport pymysql# 不安全的方式(导致注入)# query = "SELECT * FROM users WHERE username='%s' AND password='%s'" % (username, password)# 安全的方式:使用参数化查询connection = pymysql.connect(host='localhost', user='user', password='passwd', database='db')cursor = connection.cursor()# 使用 %s 作为占位符,然后将参数作为元组传入execute方法sql = "SELECT * FROM users WHERE username=%s AND password=%s"cursor.execute(sql, (username, password))results = cursor.fetchall()# ... 后续处理通过这种方式,数据库驱动会正确处理输入参数,确保用户输入永远被当作数据而非SQL代码执行。结语渗透安全是一个动态、持续的过程,而非一劳永逸的解决方案。上述的SQL注入案例仅是庞大攻击面中的冰山一角。真正的渗透测试涵盖信息收集、漏洞扫描、漏洞利用、权限提升、持久化驻留等多个阶段。它要求安全人员不断学习、思考和创新,唯有如此,才能在攻与防的博弈中抢占先机,真正为我们的数字世界构筑起一座坚不可摧的堡垒。
  • 从二十九期的各种问题说起,华为云你是认真的吗?
    首先非常感谢华为云给大家提供了一个展现算法能力的平台!然而在参与的过程中有些问题实在不吐不快,我想知道具体负责题目发布的有关人员真的有在认真做这件事吗?随便说几条吧:第一条中说提交的压缩包应为Average_HRTFs.sofa,不要包含额外目录。而第二条中说要提交源代码,且要一份报告互相矛盾提交后显示的反馈信息简陋无比,就一个【run error】,谁能懂是啥意思,【编译运行环境说明.pdf】中提供了错误列表,也没包括general_error你们是要跟参与者玩猜谜游戏吗?可能是我的理解能力不够,示例中描述也难以理解,inference.py 已经提供了Average_HRTFs.sofa的信息,为啥还需要去执行?前者提供的信息有什么借鉴意义吗?还是纯随机的utils.py的函数在调用中如何体现?我觉得咱们目的是充分发挥参与者的技术能力,没必要让参与者去猜各种题目细节,理解错误造成白白浪费参与者的时间
  • [交流反馈] 由于驱动程序 EdrDriver,BypassIO 不受支持
    Hisec Endpoint 的驱动会导致 Windows 11 的 DirectStorage API 无法正常工作,Xbox Game Bar 的设置-游戏功能界面会提示“由于驱动程序 EdrDriver,BypassIO 不受支持”,影响游戏性能,而卸载 Hisec Endpoint 可以解决此问题(Xbox Game Bar 显示“C:\ 支持 DirectStorage”,表明 DirectStorage API 恢复正常)。望华为相关项目组后续改善该问题。
  • 【隐私安全】呼吁华为加强剪贴板权限管理,共同守护用户隐私!
    【隐私安全】呼吁华为加强剪贴板权限管理,共同守护用户隐私!随着移动设备在我们日常生活中的重要性日益增加,用户对于个人隐私的关注也随之提高。众所周知,苹果iPhone手机在保护用户隐私方面做得相当出色,特别是在处理应用程序对剪贴板的访问方面。iPhone不仅会提醒用户哪些应用试图访问剪贴板,而且还提供了详细的权限设置,让用户可以控制哪些应用可以读取剪贴板内容。 相比之下,华为手机虽然在剪贴板管理方面提供了一定程度上的透明度——当应用尝试读取剪贴板时,系统会给出提示,但遗憾的是,这种提示机制并不足以保护用户的隐私。实际上,尽管有提示存在,用户依然无法有效地控制哪些应用可以访问剪贴板内容。这为用户隐私、甚至是商业机密和国家秘密带来了潜在的风险。   据调查,目前已有超过50款应用被发现可以在未经明确授权的情况下,随意读取用户的剪贴板记录。这种行为不仅侵犯了用户的隐私权,还可能导致敏感信息如密码、商业机密等在用户不知情的情况下被上传至云端服务器进行分析或用于训练某些大型模型。即使这些数据在训练过程中进行了脱敏处理,但仍有可能因为疏忽导致非敏感特征的信息被泄露,从而进一步在网络上传播,造成不可预见的后果。   鉴于此情况,我们强烈呼吁华为公司采取行动,加强其操作系统中对于剪贴板访问的权限管理。华为作为一家领先的科技企业,在保障用户信息安全方面负有重大责任。通过引入更严格的剪贴板权限控制机制,不仅可以提升用户体验,更能增强用户对品牌的信任感。   希望华为能尽快响应这一呼吁,推出更加完善的剪贴板权限管理系统,为用户提供更好的隐私保护服务。让我们共同努力,守护每个人的数字生活安全!  
  • [问题求助] 按照软件后无法正常关机
    在个人的两天电脑上安装了华为乾坤终端安全个人版,都出现了无法正常关机的情况,点击关机就自动重启了,要关机的话必须长按电源键强制关机,请问这是怎么回事?
  • [问题求助] 无法打开华为手机的蓝牙搜索
    @SuppressLint("MissingPermission") // permissions are managed by the UI layerpublic class DiscoverClassicDevicesRequest extends Request<Void, DiscoveredDevice, BluetoothStatus> { private static final String TAG = "DiscoverClassicDevicesRequest"; private boolean mIsScanning = false; private final BluetoothDiscoveryReceiver mDiscoveryReceiver = new BluetoothDiscoveryReceiver(new BluetoothDiscoveryReceiver.BluetoothDiscoveryListener() { @Override public void onDeviceFound(DiscoveredDevice device) { DiscoverClassicDevicesRequest.this.onProgress(device); } @Override public void onStartDiscovery() { mIsScanning = true; } @Override public void onStopDiscovery(Context context) { mIsScanning = false; DiscoverClassicDevicesRequest.this.onDiscoveryStopped(context); DiscoverClassicDevicesRequest.this.onComplete(null); context.unregisterReceiver(mDiscoveryReceiver); } }); public DiscoverClassicDevicesRequest(@NonNull RequestListener<Void, DiscoveredDevice, BluetoothStatus> listener) { super(listener); } @Override public void run(@Nullable Context context) { BluetoothAdapter adapter = BluetoothUtils.getBluetoothAdapter(context); if (adapter == null || context == null) { // if context is null, adapter is also null // the condition is to ensure that context is non null for startScan Log.w(TAG, "[run] error: Bluetooth is unavailable."); onError(BluetoothStatus.NO_BLUETOOTH); return; } if (!areScanningPermissionsGranted(context)) { // scanning for devices requires the location permissions to be granted Log.w(TAG, "[run] error: missing permissions to scan for devices."); onError(BluetoothStatus.NO_PERMISSIONS); return; } if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R && !isLocationEnabled(context)) { // scanning for devices requires the location services Log.w(TAG, "[run] error: location is disabled."); onError(BluetoothStatus.NO_LOCATION); return; } // cancelling any ongoing discovery adapter.cancelDiscovery(); // starting or re-starting the discovery BluetoothStatus status = startScan(context, adapter); // check returned status if (status != BluetoothStatus.IN_PROGRESS) { onError(status); } } @Override protected void onEnd() { } private BluetoothStatus startScan(@NonNull Context context, @NonNull BluetoothAdapter adapter) { if (mIsScanning) { return BluetoothStatus.IN_PROGRESS; } // register a receiver to get discovered devices IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND); filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED); filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED); context.registerReceiver(mDiscoveryReceiver, filter); // start discovery boolean isDiscovering = adapter.startDiscovery(); // analyse result if (isDiscovering) { return BluetoothStatus.IN_PROGRESS; } else { onDiscoveryStopped(context); return BluetoothStatus.DISCOVERY_FAILED; } } private void onDiscoveryStopped(Context context) { if (mIsScanning) { mIsScanning = false; context.unregisterReceiver(mDiscoveryReceiver); } }}/** * <p>This class allows reception of information from the system about Bluetooth devices that have * been found during a device discovery.</p> * <p>This receiver should be used with the following intent filter: * {@link BluetoothDevice#ACTION_FOUND ACTION_FOUND}.</p> */public class BluetoothDiscoveryReceiver extends BroadcastReceiver { private static final String TAG = "BluetoothDiscoveryReceiver"; private static final boolean LOG_METHODS = DEBUG.Bluetooth.DISCOVERY_RECEIVER; /** * The listener to dispatch discovered devices from this receiver. */ private final BluetoothDiscoveryListener mListener; /** * <p>Constructor.</p> * * @param listener * The listener to inform of discovered devices. */ public BluetoothDiscoveryReceiver(BluetoothDiscoveryListener listener) { this.mListener = listener; } @SuppressLint("MissingPermission") @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); Logger.log(LOG_METHODS, TAG, "onReceive", new Pair<>("action", action)); if (action == null || context == null) { Log.w(TAG, "[onReceive] action or context is null."); return; } switch (action) { case BluetoothAdapter.ACTION_DISCOVERY_STARTED: mListener.onStartDiscovery(); break; case BluetoothAdapter.ACTION_DISCOVERY_FINISHED: mListener.onStopDiscovery(context); break; case BluetoothDevice.ACTION_FOUND: BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); if (device != null && (device.getType() == BluetoothDevice.DEVICE_TYPE_CLASSIC || device.getType() == BluetoothDevice.DEVICE_TYPE_DUAL)) { mListener.onDeviceFound(new DiscoveredDevice(device.getName(), device.getAddress(), DeviceType.DISCOVERED)); } break; } } /** * <p>The listener for the * {@link BluetoothDiscoveryReceiver BluetoothDiscoveryReceiver} receiver.</p> */ public interface BluetoothDiscoveryListener { /** * <p>The method to dispatch a found device to a listener of this receiver.</p> * * @param device * The device that has been found. */ void onDeviceFound(DiscoveredDevice device); void onStartDiscovery(); void onStopDiscovery(Context context); }}按照上述的代码应该是可以打开手机的蓝牙搜索功能的,但是按照上述的方式无法打开华为手机的蓝牙搜索,用同样的代码在小米系统vivo系统可以正常打开蓝牙搜索功能,是我获取的搜索的接口不对嘛
  • [交流反馈] 安装1.1.17.78版本后无法更新NVIDIA驱动
    今天更新显卡驱动显示更新失败-未安装,更新最新WIN11系统以及重启计算机后还是不行。因为华为乾坤终端是这两天才安装的我就怀疑是它的问题,退出后仍然无法安装,然后我就删了乾坤,立马就能安装上了希望你们能早点修复
  • [问题求助] 对乾坤的一些技术疑问
    1. 乾坤的静态引擎目前是否具有解包/脱壳的能力?如果没有,日后是否考虑加入?比如,对Inno Setup/自解压/NSIS打包,UPX这种简单压缩壳的解包脱壳能力。实现之后对通过FakeApp传播的白加黑可以提供pre-execution阶段的检测。2. 乾坤的静态引擎目前是否具备对脚本(vbs, js, ps1, AutoIT, etc.)的特征侦测能力?3. 乾坤是否考虑添加/增强引擎对感染型病毒的修复手段?
  • [问题求助] 关于勒索病毒被锁文件回滚的逻辑的问题
    关于勒索病毒被锁文件回滚的逻辑问题:个人感觉最好还是加个主动回滚的入口,万一在“自动弹窗提示用户进行勒索回滚”的时候用户手滑点了不回滚或者用户需要斟酌回滚是否会破坏文件而取消回滚操作(有些勒索病毒可以用解锁工具解锁,不需要回滚用旧文件覆盖新文件),后续就没回滚的机会了,希望官方考虑一下。
  • [需求建议] 华为乾坤个人版没有适用win7旗舰版(32位)的客户端。
    华为乾坤个人版没有适用win7旗舰版(32位)的客户端。
  • [问题求助] 软件整体界面以及子窗口(设置、日志、隔离、信任)偏宽,和主流PC软件不一样,观感不协调
    软件整体界面以及子窗口(设置、日志、隔离、信任)偏宽,和主流PC软件不一样,观感不协调,希望能适当减少(大概减少2/9的宽度)软件整体界面以及子窗口的宽度,让软件看着更加协调方正。乾坤安全软件很简洁,没有过多的信息显示,但是软件横向过宽显得界面有廉价感、不协调,毕竟是面向消费者的软件,这样设计容易让用户担忧产品品质(界面都做不好,安全员能力和功能要画问号了)。
  • [问题求助] 高级勒索防御恢复文件的入口在哪里
    这个高级勒索防御会备份被软件修改的文件,在设置里能找到调整设置的入口,但是我似乎没找到恢复文件的入口,想问下官方这个高级勒索防御备份的文件从哪里去恢复?另外这个勒索防御似乎也没有说明支持那些格式文件的备份?能否后续告知用户支持备份哪些格式的文件,并允许用户添加自定义想备份的文件格式(毕竟专业软件种类繁多,工程作图、3D建模、平面设计、插画绘制等重要文件的格式非常繁杂,官方不可能全考虑的到,允许用户添加自定义格式是个解决问题的好办法)这个功能可以参考360、腾讯管家的相关功能设计。
  • [问题求助] 高级防勒索设置这里选择文件备份路径不支持新建文件夹。
    高级防勒索设置这里选择文件备份路径不支持新建文件夹。建议在截图所示的位置添加一个“新建文件夹”按钮,用户选择路径过程中支持自定义新建文件夹。
  • [问题求助] 病毒库升级的显示问题
    升级检测显示最新病毒库版本是14号的,升级完也是14号的,但是最后界面却显示是13号的。。。什么问题?
  • 资讯|2023世界计算大会产业对接专场举行
    9月15日下午,以“算力支撑,*筑高地”为主题,2023世界计算大会产业对接专场在长沙举行,来自政府、高校、科研院所等创新机构及创新平台的代表齐聚一堂,共同探讨计算领域前沿研究、创新支撑、应用场景等议题,携手推进先进计算领域高水平科技自立自强,共筑算力高地。​本次专场对接会由湖南省政府、国家工信部主办,湖南省工信厅、长沙市政府、湖南湘江新区、中国电子信息产业发展研究院联合承办,湖南湘江新区科技创新和产业促进局执行,湖南省鲲鹏生态创新中心等单位支持,旨在进一步助推计算技术加速创新,打造协作共赢的产业生态。会上,岳麓山大学科技城党工委副书记、管委会主任屈志峰,湖南大学党委**、副校长李肯立,中国工业互联网研究院党委副书记李炜,国防科技大学计算机学院计算机所所长黎铁军,北京大学长沙计算与数字经济研究院算力网络研究中心主任樊春分别发表《湘江科学城——建设全球研发中心城市的核心引领区》《打造算力高地 赋能区域发展》《工业互联网赋能中小企业数字化转型》《领域定制体系结构推动未来算力可持续发展》《算力平台建设关键基础软件及其对产学研的支撑》等主题演讲。算力是新型生产力,是支撑数字经济发展的重要“底座”。我省高度重视数字经济发展和算力支撑能力提升,前瞻布局算力、算网、算法、算据“四算一体”发展,算力支撑能力得到长足发展。目前,全省总算力达5100P,超算算力居全国第三;2022年,湖南湘江新区数字经济总量达2200亿元,占长沙市的53.6%,具备领先而坚实的数字产业发展基础。​会上,世界计算•长沙智谷携手长沙人工智能创新中心发布200P AI算力及第二批智慧场景。据介绍,坐落于湖南湘江新区核心区的世界计算•长沙智谷占地1000亩,总投资超180亿元。作为长沙全力打造全球研发中心城市首开区,项目以打造“产城融合、智慧低碳、生态友好、青年向往、宜居宜业”的计算之城为目标,2025年全面建成后,将为10万科研人员以及1500家研发机构提供最佳成长载体。据悉,坐落于世界计算·长沙智谷的人工智能创新中心是由长沙市政府与湖南湘江新区共同出资建设,由长沙市政府与湖南湘江新区共同出资建设,是目前省内AI算力规模最大的人工智能创新中心,在去年发布首批18大类AI+智慧场景基础上,未来将打造AI+园林景观、AI+物流、AI+数字人等全新8大智慧场景。现场,长沙昇腾人工智能创新中心大模型联合研发启动与算力合作签约,将与中南大学、智慧眼、视旅网络正式启动大模型联合研发,聚力打造国产“大模型+自主算力”集群,进一步助力湖南算力产业发展。转自鲲鹏创新中心
总条数:18 到第
上滑加载中