I finally found the solution. I let the explanation here in case someone has the same problem.
The node just saves the information required for the last commitment transaction and the penalty transaction from older commitment transactions, but does not save the info to spend it.
You can see in the logs below that the node realizes that we cheated and he is not able to spend the UTXO of that transaction.
2023-05-04T20:35:06.693Z DEBUG 027b214a85e350c65c7cb2c32ecd509d2900502efa27a7fd4bb86b3de78b6daa6b-onchaind-chan#1: Grinding for commitment to_local (theirs)
2023-05-04T20:35:06.779Z DEBUG lightningd: Adding block 118: 07127ff019e83accfbde56f8c86544b689aa591fbb38601f3d88b1c93b3f8546
2023-05-04T20:35:06.900Z DEBUG plugin-bookkeeper: coin_move 2 (penalty) 10000000msat -0msat chain_mvt 1683232506
2023-05-04T20:35:06.958Z **BROKEN** 027b214a85e350c65c7cb2c32ecd509d2900502efa27a7fd4bb86b3de78b6daa6b-onchaind-chan#1: Could not find resolution for output 1: did *we* cheat?
2023-05-04T20:35:06.958Z DEBUG 027b214a85e350c65c7cb2c32ecd509d2900502efa27a7fd4bb86b3de78b6daa6b-onchaind-chan#1: billboard: All outputs resolved: waiting 100 more blocks before forgetting channel
To be able to do that you must save a snapshot of the database ".sqlite" at the moment when the commitment transaction that you will use is the last state. Continue using the channel and when you want to do the attack simply remove the current database and load the old one. The node will think that the fraudulent commitment transaction is the correct state, It's like a brain wash.