Defense Evasion (TA0005)(external, opens in a new tab or window)
openai_chatgpt_enterprise(external, opens in a new tab or window)
text code block:from logs-openai_chatgpt_enterprise.conversation_message-* | where data_stream.dataset == "openai_chatgpt_enterprise.conversation_message" and openai_chatgpt_enterprise.conversation_message.message.author.type == "assistant" and message is not null and user.email is not null | eval Esql.message_text = to_lower(message) | where Esql.message_text like "*i can't assist*" or Esql.message_text like "*i can't help*" or Esql.message_text like "*i cannot fulfill*" or Esql.message_text like "*i cannot help*" or Esql.message_text like "*i cannot provide*" or Esql.message_text like "*i can't provide*" or Esql.message_text like "*i will not provide*" or Esql.message_text like "*i won't provide*" or Esql.message_text like "*i cannot answer*" or Esql.message_text like "*i can't answer*" or Esql.message_text like "*unable to assist*" or Esql.message_text like "*against my guidelines*" | stats Esql.event_count = count(*), Esql.conversation_id_count_distinct = count_distinct(openai_chatgpt_enterprise.conversation_message.conversation.id), Esql.message_values = values(message), Esql.timestamp_first_seen = min(@timestamp), Esql.timestamp_last_seen = max(@timestamp) by user.email, organization.id | where Esql.event_count >= 3 | keep user.email, organization.id, Esql.event_count, Esql.conversation_id_count_distinct, Esql.message_values, Esql.timestamp_first_seen, Esql.timestamp_last_seen
Install detection rules in Elastic Security
Detect OpenAI ChatGPT Enterprise Repeated Assistant Refusals in the Elastic Security detection engine by installing this rule into your Elastic Stack.
To setup this rule, check out the installation guide for Prebuilt Security Detection Rules(external, opens in a new tab or window).