Hondo

The story takes place at some point between 1869 and 1877 (It is mentioned in the dialogue that Ulysses S. Grant is President).
At a remote ranch in the Arizona Territory, homesteader Angie Lowe (Geraldine Page) and her six-year-old son Johnny (Lee Aaker) come upon a stranger (John Wayne) on foot, carrying only his saddle bags and a rifle. The man tells them only his last name, Lane, and that he was riding dispatch for the US Army Cavalry. He had lost his horse in an encounter with some Indians. Angie tells Lane her ranch hand had quit before he had a chance to break her two horses for riding, so Lane offers to break a horse himself. He asks where her husband is, and she says he is rounding up cattle in the mountains and should return soon. Lane deduces from the neglected ranch that her husband has been away for some time, a fact she confesses is true. When night falls Angie offers to let Lane sleep in her home. Angie sees his rifle is inscribed "Hondo" Lane, whom she knows had killed three men the year before. She attempts to shoot him, but due to the first chamber being empty, Hondo is not hurt. He loads the chamber and tells her to keep it that way.
Hondo returns to his Cavalry post, where he meets up with his friend Buffalo Baker (Ward Bond). He reports to his commanding officer that C troop, which was sent to gather and bring in settlers to the north, was killed by Apaches. It is clear to the Major (Paul Fix) that the Apaches are raiding and killing settlers. At the ranch, Angie and Johnny are beset by Apaches, led by Chief Vittoro (Michael Pate) and his main under-chief, Silva (Rodolfo Acosta). Angie is not nervous in their presence as they have never attacked her family before. This time, they begin manhandling Angie. Johnny emerges from the house with the pistol and shoots at Silva. As Silva recovers and approaches him, he throws the pistol at Silva. Vittoro is impressed by Johnny's bravery and makes him an Apache blood brother. Vittoro wonders where Angie's husband is and tells her that unless he returns soon, she must take an Apache husband as the boy needs a father.
In a saloon, Hondo gets into a fight with a stranger, and beats him severely. Baker tells Hondo the man called himself "Ed Lowe" (Leo Gordon), and Hondo suspects he is Angie's husband. Feeling guilty, he leaves to return Angie's horse. Lowe and a guide (Frank McGrath) follow Hondo. Hondo camps near a river but leaves when he detects two Indians stalking him. Lowe enters the camp and he and his guide are attacked by the two Indians. The guide is killed, but Hondo shoots the Apache about to kill Lowe. Lowe is briefly grateful but turns his gun on Hondo in retaliation for the beating. Hondo is forced to kill Lowe. Hondo finds a tintype of Johnny on Lowe's body, confirming his identity.
Hondo runs into an Apache party, who pursue him through the desert. He kills several but they eventually capture him. They are torturing him to get information about the Cavalry when Vittoro appears. An Indian shows Vittoro the picture of Johnny, and Vittoro assumes Hondo is Angie's husband. Silva declares the blood rite as Hondo had killed his brother. Silva stabs Hondo in the shoulder, but Hondo pins Silva to the ground, and gives him the option to take back the blood rite or die. Silva gives in. Vittoro takes Hondo to Angie's ranch, and when Vittoro asks if Hondo is her husband, she lies, saving Hondo. The Chief warns Hondo to raise Johnny in the Apache way and leaves.
While Hondo recuperates from his wounds, he shows her the picture of Johnny. She asks if he died well, and Hondo pauses before saying yes. Over the next few weeks, Hondo and Angie grow close. Hondo attempts to reveal the truth of her husband's death, but is interrupted by Vittoro's return. The chief tells them that the pony soldiers will soon return. He asks Hondo not to join them and to keep the Indian's location a secret. Hondo promises to do the first but not the latter, and Vittoro shows respect for Hondo's truthfulness. Angie tells Hondo she loves him.
The Army arrives at the ranch, commanded by ambitious but inexperienced Lt. McKay (Tom Irish) and accompanied by scouts Baker and Lennie (James Arness). McKay is determined to protect the settlers in the area by relocating them to the Army post and defend the area against Apache attacks. Lennie reveals he discovered Lowe's body and matched the horse tracks to Hondo's horse. He wants Hondo's Winchester rifle in exchange for keeping quiet about how Hondo bushwhacked Lowe. Angie overhears Lennie's demands.
Hondo prepares to leave, but before he goes, he tells Angie the truth about her husband's death. Hondo also wants to tell Johnny, but she persuades him not to, telling Hondo she didn't love her husband any longer. She says it would be unkind to tell the boy the truth of his father's death and that the secret won't follow them to Hondo's ranch in California. Hondo responds to her emotional plea with an Indian word that seals a squaw-seeking ceremony, "Varlabania", which he tells her means "forever". The Army leaves to move further on into Apache territory. As promised Hondo refuses to go with them but tells Buffalo that McKay is leading them into a massacre. Buffalo knows but he also knows that scouts such as himself have been helping to train young West Point officers for many years.
The Army returns after being ambushed by the Apaches, suffering heavy casualties. Vittoro had been killed, causing the Apaches to retreat so they can select a new chief. Hondo, Angie and Johnny join the Cavalry and head to the fort. The group is attacked by the Apaches, now led by Silva. Hondo loses his mount and is attacked by Silva, but Hondo kills him. The Indians retreat to choose another chief.
Lt. McKay says that General Crook will be arriving in the territory with a large force to pursue the Apache. Hondo sadly notes the end of the Apache "way of life," denoting that it is too bad as it was a good way. The movie ends with the idea that once back to the fort, Hondo, Angie and Johnny will continue on to Hondo's ranch in California as a family.

Question: Who killed C troop?
Answer: Apaches