服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

ChatGPT在信息安全攻击与防御的实践

日期: 来源:山石网科安全技术研究院收集编辑:V1nt
‍01
背景介绍‍‍‍‍


ChatGPT是OpenAI开发的一个大型预训练语言模型。它是GPT-3模型的变体,GPT-3经过训练,可以在对话中生成类似人类的文本响应。ChatGPT 旨在用作聊天机器人,我们可以对其进行微调,以完成各种任务,如回答问题、提供信息或参与对话。
与许多使用预定义的响应或规则生成文本的聊天机器人不同,ChatGPT经过了训练,可以根据接收到的输入生成响应,从而生成更自然、更多样化的响应。
自去年11月发布以来,ChatGPT 便在全球引起了一时的轰动,发布仅五天,用户就超过100万人。发布两个月,活跃用户数突破1亿,成为史上用户增长最快破亿的应用。
关于ChatGPT的注册和详细使用方法就暂不在这篇文章赘述了,网上都可以查到。在这篇文章里我们将深入探讨 ChatGPT AI 在安全测试中的机遇和挑战,以及网安人该如何有效利用ChatGPT。‍

02‍
社会工程学利用


在社会工程学攻击手段中,钓鱼邮件、钓鱼短信可以说是最经典的一种攻击手法,而错别字、语法混乱是网络钓鱼和诈骗电子邮件最明显的特征之一。而CHATGPT可以帮助攻击者更容易构造一封恶意的钓鱼邮件:


可以看到生成的钓鱼文案还是挺像模像样的。



03‍
 代码安全审计‍‍‍‍

来到代码审计部分,就采取DVWA靶场的漏洞代码作为例子,看看ChatGPT能不能有效准确地漏洞类型和漏洞位置,首先先从简单部分开始,以命令注入漏洞。
请描述下面代码中的安全漏洞

<?php

if( isset( $_POST[ 'Submit' ]  ) ) {
    // Get input
    $target = $_REQUEST[ 'ip' ];

    // Determine OS and execute the ping command.
    if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
        // Windows
        $cmd = shell_exec( 'ping  ' . $target );
    }
    else {
        // *nix
        $cmd = shell_exec( 'ping  -c 4 ' . $target );
    }

    // Feedback for the end user
    $html .= "<pre>{$cmd}</pre>";
}

?>
可以看到它成功做到了识别命令注入漏洞,并正确识别用户输入的来源和最终触发(shell_exec)。
再来看看中等难度的DVWA靶场漏洞代码:
请描述下面代码中的安全漏洞

<?php

if( isset( $_POST[ 'Submit' ]  ) ) {
    // Get input
    $target = $_REQUEST[ 'ip' ];

    // Set blacklist
    $substitutions = array(
        '&&' => '',
        ';'  => '',
    );

    // Remove any of the charactars in the array (blacklist).
    $target = str_replace( array_keys( $substitutions ), $substitutions, $target );

    // Determine OS and execute the ping command.
    if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
        // Windows
        $cmd = shell_exec( 'ping  ' . $target );
    }
    else {
        // *nix
        $cmd = shell_exec( 'ping  -c 4 ' . $target );
    }

    // Feedback for the end user
    $html .= "<pre>{$cmd}</pre>";
}

?>

这次ChatGPT也表现得很好,推出了黑名单过滤的逻辑,并且也给出来绕过方式和详细的解释。
再来看看DVWA impossible难度的代码:
请描述下面代码中的安全漏洞

<?php

if( isset( $_POST[ 'Submit' ]  ) ) {
 // Check Anti-CSRF token
 checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );

 // Get input
 $target = $_REQUEST[ 'ip' ];
 $target = stripslashes( $target );

 // Split the IP into 4 octects
 $octet = explode( ".", $target );

 // Check IF each octet is an integer
 if( ( is_numeric( $octet[0] ) ) && ( is_numeric( $octet[1] ) ) && ( is_numeric( $octet[2] ) ) && ( is_numeric( $octet[3] ) ) && ( sizeof( $octet ) == 4 ) ) {
  // If all 4 octets are int's put the IP back together.
  $target = $octet[0] . '.' . $octet[1] . '.' . $octet[2] . '.' . $octet[3];

  // Determine OS and execute the ping command.
  if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
   // Windows
   $cmd = shell_exec( 'ping  ' . $target );
  }
  else {
   // *nix
   $cmd = shell_exec( 'ping  -c 4 ' . $target );
  }

  // Feedback for the end user
  $html .= "<pre>{$cmd}</pre>";
 }
 else {
  // Ops. Let the user name theres a mistake
  $html .= '<pre>ERROR: You have entered an invalid IP.</pre>';
 }
}

// Generate Anti-CSRF token
generateSessionToken();

?>

这个回答里面是有些问题的,首先这里已经添加了token参数的检验,基本上已经杜绝了CSRF漏洞的利用;其次在代码中,限制了输入数据的格式,也就是说这里采用了白名单的做法,只有输入的格式跟白名单的一样才能通过验证,也基本上杜绝了命令注入。
所以尽管ChatGPT这回答看起来很符合逻辑、措辞官方,但就代码审计而言这些都是无效的回答,而且还会让代码审计人员消耗时间来判断每个点是否错误。
换个思路,如果我们让ChatGPT帮我们对比两段代码直接的安全程度差异呢
请描述下面两段代码在代码安全方面的差异

<?php

if( isset( $_POST[ 'Submit' ]  ) ) {
 // Get input
 $target = $_REQUEST[ 'ip' ];

 // Determine OS and execute the ping command.
 if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
  // Windows
  $cmd = shell_exec( 'ping  ' . $target );
 }
 else {
  // *nix
  $cmd = shell_exec( 'ping  -c 4 ' . $target );
 }

 // Feedback for the end user
 $html .= "<pre>{$cmd}</pre>";
}

?>


<?php

if( isset( $_POST[ 'Submit' ]  ) ) {
 // Check Anti-CSRF token
 checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' );

 // Get input
 $target = $_REQUEST[ 'ip' ];
 $target = stripslashes( $target );

 // Split the IP into 4 octects
 $octet = explode( ".", $target );

 // Check IF each octet is an integer
 if( ( is_numeric( $octet[0] ) ) && ( is_numeric( $octet[1] ) ) && ( is_numeric( $octet[2] ) ) && ( is_numeric( $octet[3] ) ) && ( sizeof( $octet ) == 4 ) ) {
  // If all 4 octets are int's put the IP back together.
  $target = $octet[0] . '.' . $octet[1] . '.' . $octet[2] . '.' . $octet[3];

  // Determine OS and execute the ping command.
  if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
   // Windows
   $cmd = shell_exec( 'ping  ' . $target );
  }
  else {
   // *nix
   $cmd = shell_exec( 'ping  -c 4 ' . $target );
  }

  // Feedback for the end user
  $html .= "<pre>{$cmd}</pre>";
 }
 else {
  // Ops. Let the user name theres a mistake
  $html .= '<pre>ERROR: You have entered an invalid IP.</pre>';
 }
}

// Generate Anti-CSRF token
generateSessionToken();

?>

可以看到这回答相比刚刚的要好很多,基本上都没讲错。‍


04‍
 安全规则与漏洞修复‍‍‍‍‍‍

Chat GPT 能够根据用户提供的输入快速轻松地生成 WAF 规则。例如,利用 Chat GPT 创建了一个 WAF 规则来检测 SQL 注入。
那么漏洞代码修复方面ChatGPT做得咋样呢,让ChatGPT对刚刚DVWA靶场中的最简单的命令注入漏洞修复看看:
下面代码中存在的漏洞该如何进行修复

<?php

if( isset( $_POST[ 'Submit' ]  ) ) {
    // Get input
    $target = $_REQUEST[ 'ip' ];

    // Determine OS and execute the ping command.
    if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
        // Windows
        $cmd = shell_exec( 'ping  ' . $target );
    }
    else {
        // *nix
        $cmd = shell_exec( 'ping  -c 4 ' . $target );
    }

    // Feedback for the end user
    $html .= "<pre>{$cmd}</pre>";
}

?>
从结果来看还是很不错的,大差不差,总的来说,命令注入漏洞确实已经通过escapeshellarg函数进行了修复。

05‍
安全脚本代码生成


比如说让它编写一段python程序扫描指定目录下的webshell文件。

用C++编写一个shellcode加载器:
或者让它快速帮我们编写burpsuite插件,举个例子看看,比如编写一个在每个参数都添加xss payload的插件:
再来一个示例,攻击者可以通过点击劫持漏洞诱骗用户点击看似无害的按钮或链接,但实际上执行了恶意操作,例如下载恶意软件或泄露个人敏感信息。下面是一个关于如何在 ChatGPT 中编写查找点击劫持漏洞poc的示例。
使用python编写反弹shell脚本:

‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
06‍
   总结‍‍‍‍‍

ChatGPT对于我们来说可以是个很出色、高效的工具,通过提问任何问题帮我们快速了解各个方向的基本概念以及指导,能有效提升工作效率,比如可以通过它给出的回答配合自己的需求快速修改编写poc、自动化脚本等,并且可以帮助我们提供思路,扩宽思维。通过以上示例可以发现ChatGPT比较明显的优势在于正式流畅的文案生成方面和代码功能实现方面,不过需要注意的是ChatGPT还是存在一些必然的局限性,比如遇到一些比较复杂的问题时,会一本正经的“胡说八道”,这时不能被牵着鼻子走得出错误的结果,需要我们配合自身足够的专业能力去辨别错误,并且引导它去往正确的方向分析,但是这个引导过程可能会挺漫长,比较需要技巧。
所以ChatGPT更主要地只是起到一个辅助的作用,必须清楚地了解到其优点和局限性,才能最有效地利用其功能。    
   
       ‍

相关阅读

  • ChatGPT在信息安全竞赛中出题与解题实践

  • 前面我们测试了在攻击与防护方面的利用,接下来山石安研院研究人员将以一系列的常见题目测试,来深入探讨 ChatGPT AI 在CTF等各类信息安全竞赛中的题目设计与解题应用。我们先
  • 山石网科获CVE漏洞编号颁发权限CNA

  • 山石网科获CVE漏洞编号颁发权限近日,山石网科通过 CNA 准入程序,正式成为 CVE 编号颁发机构CNA。‍CVE全称是 Common Vulnerabilities & Exposures(通用漏洞 & 披露),是全球安全
  • 【漏洞通告】Joomla未授权访问漏洞(CVE-2023-23752)

  • 漏洞名称:Joomla未授权访问漏洞(CVE-2023-23752)组件名称:Joomla影响范围:4.0.0 ≤ Joomla ≤ 4.2.7漏洞类型:未授权访问利用条件:1、用户认证:不需要2、前置条件:无3、触发方式:远
  • 【漏洞通告】泛微E-cology9 SQL注入漏洞

  • 漏洞名称:泛微 E-cology9 SQL 注入漏洞组件名称:泛微 E-cology9影响范围:泛微 E-Cology9 ≤ 10.55漏洞类型:SQL 注入利用条件:1、用户认证:不需要用户认证2、前置条件:默认配置3、
  • 不是听说,这场SSRC HACKING PARTY太炸了!

  • 听说……这次不是听说!2月25日第三届SSRC HACKING PARTY在深圳蛇口圆满举办!现场有多炸,来看看视频吧老规矩,文末有福利,别错过~ SSRC白帽英雄们集结湾区深圳蛇口May Town梦工厂

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • ChatGPT在信息安全攻击与防御的实践

  • ‍‍‍01背景介绍‍‍‍‍ChatGPT是OpenAI开发的一个大型预训练语言模型。它是GPT-3模型的变体,GPT-3经过训练,可以在对话中生成类似人类的文本响应。ChatGPT 旨在用作聊天机
  • 海南检察机关依法对邓小刚涉嫌受贿案提起公诉

  • 日前,海南省地质局原党组副书记、局长邓小刚(正厅级)涉嫌受贿罪一案,经海南省人民检察院交办,由海南省人民检察院第一分院依法向海南省第一中级人民法院提起公诉。检察机关在审
  • ChatGPT在信息安全竞赛中出题与解题实践

  • 前面我们测试了在攻击与防护方面的利用,接下来山石安研院研究人员将以一系列的常见题目测试,来深入探讨 ChatGPT AI 在CTF等各类信息安全竞赛中的题目设计与解题应用。我们先
  • 邓小刚、王波、刘瑞英被提起公诉

  • 海南检察机关依法对邓小刚涉嫌受贿案提起公诉日前,海南省地质局原党组副书记、局长邓小刚(正厅级)涉嫌受贿罪一案,经海南省人民检察院交办,由海南省人民检察院第一分院依法向海